<?xml version="1.0" encoding="uft-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en-US">
<head>
  <title>Software for Economists (TM)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="../dpt/isaac/isaac.css" />
  <link rel="stylesheet" type="text/css" href="http://www1.american.edu/cas/econ/faculty/isaac/isaac.css" />
   <meta name="Author"
         content="Alan G. Isaac" />
   <meta name="Keywords"
         content="software, economists, software for economists, editors, text editors, GAUSS, matrix programming, agent-based simulation, agent-based economics, Python, LaTeX, PostScript, Vim, graphics, symbolic mathematics" />
   <meta name="Description"
         content="Software resources for economists." />
</head>

<body>

<p color="red">
This page is outdated.
The current version is on
<a href="http://goo.gl/PUokY7">GitHub</a>.
</p>

<ul class="mainmenu">
<li>
<a href="#EDITORS">Text Editors</a> 
        <ul>
        <li>
        <a href="#vim">Vim</a>
        </li>
        <li><a href="#monospace">Monospace Fonts</a></li>
        </ul>
</li>
<li>
<a href="#typemath">Producing Scientific Documents</a> 
        <ul> 
        <li>
        <a href="#docbasics">Basic Considerations</a>
        </li>
        <li>
        <a href="#metafmt">Meta Formats</a>
        </li>
        </ul>
</li>
<li>
<a href="#TEX">TeX</a> 
        <ul>
	<li><a href="#texdistro">TeX Distributions</a></li>
	<li><a href="#wysiwym">WYSIWYM Interfaces</a></li>
        <li><a href="#learntex">Learning TeX</a></li>
        <li><a href="#addchart">Adding drawings to LaTeX documents</a></li>
        <li><a href="#texconvert">LaTeX Format Conversion</a></li>
        <li><a href="#present">Presentations</a></li>
        <li><a href="#textables">Tables</a></li>
        <li><a href="#othertex">Other TeX Resources</a></li>
        </ul>
</li>
<li>
<a href="#matrixlanguages">Matrix and Array Programming</a> 
        <ul>
        <li>
        <a href="#numpy">NumPy</a>
        </li>
        <li>
        <a href="#other-mpl-free">Other Free Matrix Programming Languages</a>
        </li>
        <li>
        <a href="#GAUSS">GAUSS</a> 
        </li>
        <li>
        <a href="#other-mpl-com">Other Commercial Matrix Programming Languages</a>
        </li>
        </ul>
</li>
<li>
<a href="#gplang">General Purpose Languages</a>
</li>
<li>
<a href="#STAT">Statistics</a> 
</li>
<li>
<a href="#CAS">Symbolic Math</a> 
</li>
<li>
<a href="#graphics">Graphics</a> 
</li>
<li>
<a href="#WWW">Web Resources</a> 
</li>
<li>
<a href="#MISC">Miscellani</a>
</li>
</ul>



<h1 id="top">Software for Economists</h1>

<div style="font-size: 60%;background-color:white; color: gray">
Author: Alan G. Isaac
<br />
Last modified: 2010-05-25
<br />
Most recent version: <a href="http://econpy.googlecode.com/svn/trunk/software4econ.xhtml">http://econpy.googlecode.com/svn/trunk/software4econ.xhtml</a>.
<br />
<span style="color:red">Caveat lector:</span> do not assume the information below is accurate.
In particular: the advice below comes without any warrantted whatsoever,
and please confirm licensing information with the software copyright holders.
</div>






<p>
The following software list is idiosyncratic.
I have tried to make it generally useful for economists.
I favor cross-platform solutions,
since I view the current near monopoly of the end-user operating system as a momentary historical aberration.
<a href="#contact">Suggested changes and additions</a> are welcome.
A resource complementary to this page is <a href="http://rfe.org/showCat.php?cat_id=86">RFE's Software page</a>.
</p>

<div style="font-size: 60%;background-color:white; color: gray">
Two requests:
<ul>
<li>
If you use a free and open source software application,
please send money to the developers.
(Yes, this is an appeal by an economist to your moral sense. Live with it.)
</li>
<li>
Please read Richard Stallman's <a href="http://www.gnu.org/philosophy/right-to-read.html">Right to Read article</a>, as well as his <a href="http://www.gnu.org/gnu/manifesto.html">GNU Manifesto</a>.
Many people felt Stallman was over-concerned when he wrote this.
Events have been proving him prophetic:
including ebooks that ``time out'' and become inaccessible after ten hours of viewing,
and perhaps most famously the ebook version of Alice's Adventures in Wonderland that <a href="http://www.pigdogs.org/art/adobe.html">forbids reading it aloud</a>.
<!--  http://www.planetebook.com/mainpage.asp?webpageid=201 -->
You may also wish to visit the <a href="http://www.fsf.org">Free Software Foundation</a>,
visit <a href="http://www.opensource.org">OpenSource.Org</a>,
and sign a <a href="http://petition.eurolinux.org">petition agains software patents</a>.
</li>
</ul>
Thank you.
</div>



<h2 id="EDITORS">Text Editors</h2>

<p>
First things first,
and having a decent text editor is probably first.
All other things equal, multi-platform solutions are always preferable.
Nowadays having an editor that nicely handles unicode (UTF-8) is pretty important.
(See <a href="#unicode-hints">Unicode hints</a>.)
</p>

<p id="vim">
I suggest <a href="http://www.vim.org">Vim</a>.
It is highly configurable,
available on essentially every platform
and quite wonderfully designed.
</p>

<h3>Some cross-platform editors:</h3>

<p>
If you are willing lean against the wind and use a mode based editor,
I strongly recommend the free text editor <a href="http://www.vim.org/">Vim</a>.
If you are unwilling to learn mode-based editing,
you can still try a modeless configuration of Vim called <a href="http://cream.sourceforge.net/">Cream</a>.
Or try <a href="http://fte.sourceforge.net/">FTE</a>,
which (like Vim) is free, Open Source, and supports folding.
On top of all this, it is charityware:
you pay nothing for this excellent software,
but users are encouraged to make a donation for needy children in Uganda.
</p>

<p class="boxed">
See <a href="#vimhints">Vim user hints.</a>
</p>


<p>
The elephant in the room is 
<a id="emacs" href="http://www.gnu.org/software/emacs/">GNU emacs</a>:
big, powerful, and free.
(Vincent Goulet offers a <a href="http://vgoulet.act.ulaval.ca/en/ressources/emacs/">modified emacs</a>
that is easy to install across platforms and is particularly useful for LaTeX users.)
Some prefer the closely related <a href="http://www.xemacs.org/index.html">XEmacs</a>
(but development on that has slowed).
Many users will find the somewhat less powerful but much smaller
<a href="http://www.bengtl.net/files/mg3a/">mg3a</a>
provides sufficient emacs style functionality.
</p>

<p>
There are many <a href="http://www.micro.org/novell/faq/nvfaq-r.htm">alternatives</a>.
A lightweight but powerful and popular alternative is <a href="http://sourceforge.net/projects/gedit/">gedit</a>,
the default text editor for the GNOME desktop.
A newer and interesting possibility is <a href="http://www.geany.org/">Geany</a>. (License: GPL)
If you are looking for small, fast, and free,
start with <a href="http://www.nano-editor.org/">nano</a>.
<a href="http://space.mit.edu/~davis/jed/">JED</a> is reputed to be fast and powerful,
and it has a particularly powerful macro language.
<a href="http://hessling-editor.sourceforge.net/index.html">The Hessling Editor (THE)</a> gets raves and uses REXX as its scripting language.
This makes it very powerful, and it has some unusual and excellent features
(see, e.g., the 'all' command, which Vim approximates with 'folddoopen').
<a href="http://scintilla.sourceforge.net/SciTE.html">SciTE</a> is a multi-platform source-code editor with some interesting and powerful features:
it can be scripted with the Lua programming language,
and it is based on <a href="http://www.scintilla.org/">Scintilla</a>.
<a href="http://www.activestate.com/komodo_edit/">Komodo Edit</a> is a promising open-source editor,
the same one used in ActiveState's commercial Komodo IDE.
Finally I have to mention the unusual <a href="http://www-2.cs.cmu.edu/~rcm/lapis/">Lapis editor</a>,
which allows simultaneous selection of discontinuous segments of text.
</p>


<p>
Aside:
you can still get the <a href="http://ex-vi.sourceforge.net/">traditional vi editor</a>,
which has been <a href="http://slashdot.org/article.pl?sid=02/01/24/0146248">free and open source since 2002</a>.
</p>

<p>
Very specialized:
the Java based <a href="http://record-editor.sourceforge.net/">Record Editor</a> may be just what you need if you are working with fixed-field-length data files.
</p>

<div>
Windows users:
<br />
The NotePad editor is always available as an accessory program,
but it is too limited for serious use.
If you like the basic interface,
try the fast and powerful <a href="http://www.scintilla.org/">Scintilla</a>-based <a href="http://notepad-plus-plus.org/">NotePad++</a>. (License: GPL)
I also like the popular shareware <a href="http://www.textpad.com/">TextPad</a>,
which includes nice syntax highlighting, a nice grep utility,
beautiful handling of column oriented editing,
and an accurate (and somewhat LaTeX sensitive) spell-checker.
<p class="boxed">
See <a href="#tphints">TextPad user hints.</a>
</p>
<p>
Python users may want to consider the interesting <a href="http://wiki.woodpecker.org.cn/moin/UliPad">UliPad</a>.
There is also the popular, lightweight <a href="http://www.liquidninja.com/metapad/">MetaPad</a>,
and the fairly powerful <a href="http://www.editpadpro.com/editpadlite.html">EditPad Lite</a>,
and <a href="http://www.semware.com/">TSE Pro</a> has an avid fan base,
and it is available in a console version.
If you can afford it, there is also
Lugaru's <a href="http://www.lugaru.com/lugaru.html">Epsilon</a>, a powerful, fast, yet lightweight implementation of Emacs for Windows.
For pure speed on a Windows platform there is the powerful <a href="http://www.vedit.com/">VEdit</a>, which offers a free trial version.
</p>
</div>

<h3>HTML Editors</h3>

<p>
Generally any good <a href="#EDITORS">text editor</a> with syntax highlighting will be fine for HTML editing,
but <a href="http://www.nvu.com">Nvu</a> is of additional interest:
is is based on the Mozilla Composer code base,
so it offers WYSIWYG editing of HTML that for moderately sophisticated use rivals DreamWeaver and FrontPage.
(License: MPL/LGPL/GPL tri-license.)
The innovative <a href="https://www.raptor-editor.com">Raptor Editor</a>
allows editing HTML content in a WYSIWYG setting.
(License: GPL 3.)
The W3C's <a href="http://www.w3.org/Amaya/">Amaya editor</a>
integrates browsing, editing, and remote access,
and it supports XML applications (including SVG).
(Cross platform; language: C; license: W3C Software Notice and License)
</p>

<h3>Collaborative Editors</h3>

<p>
Mac users can try <a href="http://www.codingmonkeys.de/subethaedit/">SubEthaEdit</a>.
</p>


<h3>Fonts</h3>

<h4 id="monospace">Monospaced Fonts</h4>

<div id="STIX">
Before listing some monospaced fonts,
I must note the wonderful <a href="http://www.stixfonts.org/">STIX</a> font project.
These are "a comprehensive set of fonts that serve the scientific and engineering community".
and are available under a royalty free (and fairly liberal) license.
(TeX users should check these out!)
The fonts were released in May 2010.
Here are MiKTeX installation instructions from Ulrike Fischer:
<ol>
<li> 
Unpack the zip-file somewhere outside miktex. You will get a
folder stix-tds
</li>
<li> 
Add the folder stix-tds as a new root in miktex - settings, tab "roots"
</li>
<li> 
Activate the stix.map file either in a document with
<code>\pdfmapfile{=stix.map}</code> or globally by following the 
<a href="http://docs.miktex.org/2.9/manual/advanced.html#psfonts">instructions in the documentation</a>
</li>
<li> 
Test the font with this document:
<pre>
\documentclass{article}
%\pdfmapfile{=stix.map} %if the map file is not activated globally
\usepackage{stix}
\begin{document}
Some text, and a math formula \(a+b=\sqrt{c}\).
\end{document}
</pre>
</li> 
</ol>
</div>

<p>
Once you have chosen your editor, you may want to find yourself a
<a href="http://home.bsu.edu/prn/monofont/">decent monospaced font</a>.
(Crucial for programming; always test this character sequence: Il1aoe0O.)
My favorite is Andale Mono,
a TrueType font that I find exceptionally readable even at small font sizes.
There appears to be more than one
<a href="http://corefonts.sourceforge.net/">legal yet free distribution</a>,
due to the original licensing terms,
but you can also <a href="http://www.fonts.com/font/monotype/andale-mono">purchase the font</a>.
My second choice is the Unicode <a href="http://dejavu-fonts.org/wiki/Main_Page">DejaVu</a> font family.
(Derivative from <a href="http://www.gnome.org/fonts/">Bitstream's Vera Fonts</a>;
available as a Latin-Cyrillic-Greek subset;
<a href="http://dejavu-fonts.org/wiki/License">License</a>)
</p>

<p>
A few more freely available mono-space fonts ...
Most systems include some version of CourierNew,
which is mostly adequate,
or LucidaConsole, which is pretty good.
(Unfortunately, neither adequately distinguishes 0 from O.)
Another good choice from Adobe is <a href="http://sourceforge.net/projects/sourcecodepro.adobe/">Source Code Pro</a>,which in regular weight looks quite a bit like Andale Mono,
but which somewhat overweights its boldface font.
(OpenType, Latin-1 only; License: Open Font License 1.1)
Another popular font is <a href="http://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released">Envy Code R</a>. (True Type, Latin-1 and Latin-1 Supplement; License: gratis but not redistributable)
For more choices, filter on mono-spaced fonts at <a href="https://www.google.com/fonts">Google Fonts</a>
or <a href="http://www.fontsquirrel.com/">Font Squirrel</a>.
User ratings of “programming fonts” can be found on <a href="http://www.slant.co">Slant</a>.
The <a href="http://www.gnu.org/software/freefont/">GNU FreeFont</a> mono-space fonts
are available as OpenType or TrueType.
Some people like <a href="http://www.marksimonson.com/fonts/view/anonymous-pro">Anonymous</a> (OFL).
There is also a more narrowly focused but very useful <a href="http://archive.vector.org.uk/art10002160">APL font (SImPL.TTF)</a>.
Those needing a small font-size might consider the <a href="http://tobiasjung.name/profont/">ProFont</a> bitmap font,
which looks great at 9pt.
(License: MIT)
</p>

<div>
Good commercial mono-space fonts:
<ul>
<li>
<a href="http://www.evertype.com/emono/">Everson Mono Unicode</a> (good reputation for its Unicode support, but I find it difficult to read at small font sizes)
</li>
<li>
<a href="http://www.fsd.it/fonts/pragma.htm">Pragmata</a>
</li>
<li>
A popular option with good Unicode support is MicroSoft <a href="http://www.microsoft.com/typography/fonts/family.aspx?FID=300">Consolas</a>,
which is an OpenType font.  
</li>
</ul>
</div>

<h4 id="fonts">Other Useful Fonts</h4>

<p>
<a href="http://www.sil.org/~gaultney/gentium/">Gentium</a> is a high-quality
FOSS unicode font set.
</p>
<p>
The <a href="http://www.ctan.org/tex-archive/fonts/arev/doc/fonts/arev/">Arev</a>
fonts are useful for presentations containing math.
</p>


<h3 id="spell">Spell Checkers</h3>

<p>
The most natural approach to spell checking is modular,
but many editors nevertheless include their own spell checker.
If yours does not, there are many free options.
Perhaps the most obvious cross-platform option is 
<a href="http://aspell.sourceforge.net/">Aspell</a>.
(If you will use the <a href="http://aspell.net/win32/">Windows release</a>,
see <a href="#aspellhints">Aspell hints</a>.)
Aspell derives from the more famous
<a href="http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html">ispell</a>.
(There seem to be separate implementations of <a href="http://www.ctan.org/tex-archive/support/ispell/">ispell for Unix and OS/2</a> and 
<a href="http://www.projectory.de/ispell/">ispell for Win95/NT</a>.
You can also try <a href="http://tug2.cs.umb.edu/tex-archive/support/jspell/">jspell</a>
in a DOS environment.)
If you need a spell checker for general Windows applications,
try <a href="http://ftp.pcworld.com/pub/new/business/other/apscinst.exe">All-Purpose Spell Checker</a> or
<a href="http://www.quinion.com/mqa/spell.htm">Spell Checker for Edit Boxes</a>.
(They are free.)
</p>

<p>
Vim 7+ includes a spell checker.
You can also <a href="http://www.fleiner.com/vim/spell.html">integrate Vim with aspell</a>,
which is my preference.
</p>

<!-- 
Dictionary and Thesaurus

Finally we could also integrate in a web browser to take us to our favorite dictionary and thesaurus site as follows:
    map <Leader>d <Esc>:silent !mozilla http://www.m-w.com/<CR>
or to send the current word
    map <Leader>d <Esc>:silent !mozilla "http://www.m-w.com/cgi-bin/ Dictionary?book=Dictionary&va=<cword>"<CR>
    map <Leader>d <Esc>:silent !mozilla "http://www.m-w.com/cgi-bin/ Thesaurus?book=Thesaurus&va=<cword>"<CR>

For Windows and the Cygwin environment you will need the following syntax:
    map <Leader>d <Esc>:silent !start mozilla http://www.m-w.com/<CR>
    map <Leader>d <Esc>:silent !start mozilla "http://www.m-w.com/cgi-bin/ Dictionary?book=Dictionary&va=<cword>"<CR>
    map <Leader>d <Esc>:silent !start mozilla "http://www.m-w.com/cgi-bin/ Thesaurus?book=Thesaurus&va=<cword>"<CR>

There are two new syntax items in the line above. The "silent" suppresses output from the command we invoke and the "start" for the Windows platforms runs the program in the background so we can continue the edit session. The silent option is not available in the vi editor.


//Name this file spellcheck.js and make a shortcut to it on your browser
oShell= new ActiveXObject("WScript.Shell");
oShell.SendKeys("^c" ); //copy
oWord= new ActiveXObject("Word.Application");
oWord.Visible= true;
oWord.Documents.Add();
oWord.Selection.Paste();
oWord.ActiveDocument.CheckSpelling();
oWord.Selection.WholeStory();
oWord.Selection.Copy();
oWord.ActiveDocument.Close(0);
oWord.Quit();
var nRet= oShell.Popup("Apply changes?\nClick OK to replace all selected text.",0,"Spell Check Complete",33);
if (nRet==1){
 oShell.SendKeys("^v");//paste
 }
-->


<h3>Dictionaries and Thesauri</h3>

<p>
These days, your favorite dictionaries and thesauri are probably available free online.
My favorite is <a href="http://www.bartleby.com/61/">The American Heritage® Dictionary of the English Language</a>.
Unfortunately the online interface is rather clunky.
The DICT Development Group offers a free <a href="http://www.dict.org/">online dictionary</a> that is very fast.
<a href="http://www.wiktionary.org/">Wiktionary</a> shows great promise and is pretty fast.
In addition,
you can submit a query for "yourword" directly as <tt>http://www.dict.org/bin/Dict?Form=Dict1&amp;Query=yourword&amp;Strategy=*&amp;Database=*</tt>.
Windows users can download for free the <a href="http://www.freelang.net/dictionary/">Freelang</a> translation dictionaries.
</p>

<p>
<a href="http://www.aiksaurus.com/">Aiksaurus</a> is a powerful, free, cross-platform thesaurus.
Windows users can download <a href="http://wordweb.info/free/">WordWeb</a> for free.
</p>

<h3>Stream Editors</h3>

<p>
The only stream editor I have experience with is <a href="http://www.gnu.org/software/sed/">sed</a>,
which is very fast, powerful, and cross platform. (License: GPL)
For an introductory tutorial,
try <a href="http://www.urc.bl.ac.yu/manuals/progunix/sed.txt">SED: A Non-interactive Text Editor</a>.
If you decide to use sed a lot,
you may wish to try <a href="http://www.student.northpark.edu/pemente/sed/">sedsed</a>,
and Python-based sed debugger.
</p>




<h2 id="typemath">Producing Scientific Documents</h2>

<h3 id="docbasics">Basic Considerations</h3>

<p>
Scientific documents will generally include typeset mathematics.
Proper typesetting aids communication,
and ISO31/XI therefore provides typesetting standards.
(See <a href="http://www.tug.org/TUGboat/Articles/tb18-1/tb54becc.pdf">Claudio Beccari's discussion</a>,
but also the <a href="http://tex.stackexchange.com/questions/14821/whats-the-proper-way-to-typeset-a-differential-operator">thread on StackExchange</a>.)
</p>

<div>
There are three basic approaches to producing mathematical documents.
<ol>
<li>
WYSIWYG: What you see is what you get.
Generally this means you will use a <a href="#wordprocessor">word processor</a> that provides support for mathematics.
Your printed document will look very similar to the document view in your working environment.
(Which often means it is not typeset very well.)
</li>
<li>
WYSIWYM: What you see is what you mean.  
Generally this means that your working environment will be a user-friendly graphical interface to an underlying typesetting language.
Your printed document will look somewhat similar to the document view in your working environment,
but substantial formatting will be added to the document when it is typeset.
</li>
<li>
WYSIYM: What you see is your markup.
Generally this means that your working environment will be your favorite text editor,
and you will create a plain text document that incorporates markup commands to induce formatting and the typesetting of special symbols.
Your printed document will look quite different from the document view in your working environment.
Substantial formatting will be added to the document when it is typeset,
and your markup commands will not be visible in the typeset document.
</li>
</ol> 
</div>

<h4>WYSIWYG</h4>

<p>
A good cross platform solution is <a href="http://www.openoffice.org/">Open Office</a>,
which includes the oomath formula editor.
<a href="http://www.openoffice.org/">Open Office</a> is free and open source software.
</p>

<p> 
Another cross platform solution is <a href="#abiword">AbiWord</a>,
which brilliantly uses MathML as its internal representation of mathematics.
AbiMath can import MathML equations.
AbiWord also support <a href="#itex">itex</a> for equation input,
which is quite wonderful.
</p>

<p>
For Windows users,
the most common approach is Microsoft Word with embedded Equation Editor equations.
This is a pretty clumsy environment if your writing includes much mathematics,
but it is widely used.
Slightly better might be to use <a href="http://elevatorlady.ca/">Aurora</a>,
which allows you to embed typeset equations into a Word document. (Shareware.)
The scientific word processor <a href="http://www.expswp.com/">EXP</a> has a WYSIWYG interface and supports LaTeX file conversion.
<a href="http://www.micropress-inc.com/eqmlite.htm">Equation Magic Lite</a> is a free OLE-based equation editor for Win 95/98 and WinNT/4.
</p>

<h4 id="wysiwym">WYSIWYM</h4>

<p>
Some working environments allow you to see your mathematics in a form closely related to how it will be printed,
while reserving polished document formatting to a separate "typesetting" process.
Anyone who has printed a web page is familiar with the difference between the screen display and the typeset printed version (or "print preview") of the document:
just imagine directly editing such a screen display before typesetting your document.
These are sometimes called WYSIWYM (what you see is what you mean) environments.
</p>

<div id='latexgui'>
<p>
The most popular WYSIWYM environments are interfaces to an underlying <a href="#TEX">LaTeX</a> document.
In such an environment,
you will see for example the glyph <code>&beta;</code> instead of the LaTeX code <code>\beta</code>.
</p>

<p id="LyX">
The only cross-platform implementation I know of is <a href="http://www.lyx.org">LyX</a>.
Binaries are available for Linux, Mac, and Windows users.
LyX can interface with the <a href="#Maxima">Maxima</a> computer algebra system.
(Just add the path to Maxima in Tools -&gt; Preferences -&gt; Paths.)
</p>

<p>
An interesting alternative is <a href="http://www.texmacs.org/index.php3">TeXmacs</a>.
</p>

<p>
Windows users appear to have a number of commercial choices,
the most popular of which seems to be <a href="http://www.mackichan.com/">Scientific Notebook</a> and <a href="http://www.mackichan.com/">Scientific Word</a>.
(Scientific Notebook is not marketed as a LaTeX front end,
but as of 2004 it still saves in LaTeX format and with a tiny amount of editing can be used that way.)
See <a href="#sw-hints">Scientific Word user hints</a>.
</p>

<p>
<a href="http://www.wolfram.com/">Mathematica</a> notebooks can also be used as an WYSIWYM interface for mathematical documents,
with some support for both LaTeX and MathML export.
</p>
</div>


<p id='mathmlgui'>
In the WYSIWYM world,
MathML is an obvious alternative to the LaTeX as an underlying document format.
(In principle,
this should not matter much to a user,
who should be able to work in the GUI environment and not worry much about the underlying format.)
The <a href="http://www.w3.org/Amaya/">Amaya browser/authoring tool</a> enables the WYSIWYM production of mathematical documents,
uses MathML as the underlying format.
As of 2005,
I find Amaya slow and clumsy for the production of mathematics.
</p>


<h4 id="wysiym">WYSIYM</h4>

<p>
The most powerful way to produce mathematics is to learn a markup language for type-setting mathematics.
This also provides a big advantage for the process of writing:
you get to use your favorite <a href="#EDITORS">text editor</a> and thereby get access to powerful editing facilities.
The most popular choice is <a href="#TEX">LaTeX</a>,
which is almost the universal WYSIYM choice among mathematicians, physicists, and economists.
It is also my personal choice.
An alternative is <a href="http://lout.sourceforge.net/">Lout</a>,
which is much less widely used but has some strong advocates.
A full Lout installation is remarkably small:
the download is less than 2Mb.
The math in a Lout source document looks a lot like math in the <a href="http://wolfram.schneider.org/bsd/7thEdManVol2/eqn/eqn.html">EQN</a> language.
(Speaking of which, some people insist that EQN and <a href="http://www.gnu.org/software/groff/groff.html">GROFF</a> remain the right way to typeset mathematics.)
</p>


<h3 id="metafmt">Meta Formats</h3>

<p>
There are a number of efforts to provide a meta-format from which
both LaTeX and XHTML/MathML documents can be generated.
The most notable and currently developed is probably <a href="http://www.albany.edu/~hammond/gellmu/">GELLMU</a>,
although <a href="http://tbookdtd.sourceforge.net/">tbook</a> is also interesting.
I like the much simpler <a href="http://docutils.sourceforge.net/rst.html">restructured text (reST)</a>,
which allows inline and display math in LaTeX format.
(See my <a href="#reST_hints">reST hints</a>.)
Citation handling is currently (2005) weak,
but <a href="http://code.google.com/p/bibstuff/">bibstuff</a> provides some basic capabilities.
Math support is improving.
It may also be worth trying reST plus Mozilla's itex for web math.
<!-- add link to my document -->
Other metaformat options include:
<a href="http://www.maplefish.com/todd/aft.html">Almost Free Text (AFT)</a>,
<a href="http://daringfireball.net/projects/markdown/">MarkDown</a>,
<a href="http://hobix.com/textile/">TextTile</a>,
and
<a href="http://www.valdemar.net/~erik/setext/">setext</a>.
</p>

<h4>reStructuredText</h4>

<p>
reST to HTML:
just use the rst2html writer.
If you have included math in the document,
use the rst2mathml writer.
</p>

<h5>reST to PDF</h5>

<p>
The usual way of creating PDF from an reST document is the following:
use the rst2latex writer
(or the <a href="http://docutils.sourceforge.net/sandbox/jensj/latex_math/tools/rst2latexmath.py">rst2latexmath</a> writer)
to convert the document to LaTeX format,
and then use pdftex to produce the PDF.
</p>

<p>
<a href="http://code.google.com/p/rst2pdf/">rst2pdf</a>
produces PDF directly using the <a href="#reportlab">ReportLab</a> library. 
Good math handling via Matplotlib's mathtext!
</p>

<p>
You can also produce HTML with rst2html and then convert it.
Using Adobe Acrobat can work moderately well,
either by printing from a browser or by directly importing the HTML document.
Alternatively, you can use the <a href="http://www.htmltopdf.org/">xhtml2pdf</a> converter (License: GPL or commercial)
or the <a href="http://en.wikipedia.org/wiki/Prince_XML">Prince</a> XML converter.
</p>


<h3 id="TEX">LaTeX and Related Software</h3>

<p>
Background:
LaTeX is a document formatting package based on TeX.
TeX is typesetting software, arguably the best in the world
(especially for mathematics).
In this section I will concentrate on LaTeX and related resources.
</p>

<p>
To get started with LaTeX you will need two things:
a <a href="#EDITORS">text editor</a> or <a href="#latex_ide">IDE</a>,
and a <a href="#texdistro">LaTeX distribution (such as MikTeX, OzTeX, teTeX, or fptex)</a>.
Amazingly enough, you can get everything you need for free.
You can also get great help from other users,
e.g. on <a href="news://comp.text.tex">comp.text.tex</a> or
<a href="http://lists.sourceforge.net/lists/listinfo/miktex-users">the MikTeX users list</a>.
</p>


<p class="boxed">
AU Students:
<br />
For mathematical documents and for long documents (like dissertations!) you should use the LaTeX document preparation system.
There is an <a href="http://www1.american.edu/cas/econ/misc/austyl/authesis.htm">AU Thesis Class</a>,
which automatically handles all the formatting of your dissertation or thesis.
Instructions for using this with Scientific Word are included.
Also see MacKichan Software's <a href="http://www.mackichan.com/techtalk/v30/AddingLaTeXStyle.htm">basic instructions</a> and
<a href="http://www.mackichan.com/techtalk/v30/addinglatexstyle-closerlook.htm">detailed instructions</a>.
You can also <a href="http://stefaanlippens.net/customLaTeXclassesinLyX">use this custom document class</a>
with <a href="#lyx">LyX</a>.
That said,
my recommendation is to us <a href="#vim">Vim</a> with my <a href="http://econpy.googlecode.com/svn/trunk/text/vimfiles/ai_texmenus.vim">MiKTeX menus</a>,
or with <a href="http://vim-latex.sourceforge.net/">Vim-LaTeX</a>.
</p>


<p>
If you are used to word processors,
you may initially find the process of creating a LaTeX document a bit clumsy:
you do not see the document formatting as you write.
However for long documents this is actually an <em>advantage</em>,
which you will grow to appreciate.
You will create your LaTeX input file with your text editor.
In addition to your text,
you will add certain LaTeX formatting commands to this input file.
You will then use your LaTeX distribution to process this input file,
which will produce a device independent (<tt>.dvi</tt>) file that you can view and print.
Details follow.
</p>

<p>
One caveat:
<br />
When you are working on an academic article,
LaTeX is an excellent environment.
But when submission time comes,
you may pick a journal that does not accept LaTeX.
What to do?
i. Article format generally does not matter until acceptance:
hardcopy submissions are still usually expected, 
and otherwise <acronym class="help" title="Portable Document Format">PDF</acronym> is generally acceptable.
So there is really no problem until an article is <em>accepted</em> at such a journal.
ii. Most journals that express a preference either ask for standard LaTeX or ask for common word-processor formats, but even in the latter case LaTeX is usually acceptable.
iii. If you have written an article in LaTeX and it has been accepted by a journal that for some reason will not accept LaTeX,
you can easily <a href="#texconvert">convert</a> your article to a different format.
</p>

<h3 id="textools">TeX Tools</h3>
<p>
<a href="http://miktex.org/unx/">MiKTeX tools</a> have been released for UN*X systems.
</p>

<h3 id="texdistro">TeX Distributions</h3>

<div>
There are many commercial and freeware LaTeX distributions for all platforms.
Each comes with its own installation instructions,
which you must be sure to follow <em>step-by-step</em>.
For Windows 2000 and XP,
I have had wonderful experiences with the freeware <a href="http://www.miktex.org/">MikTeX</a>,
which has managed to make installation a virtually painless 15 minute process
<em>if</em> you read the readme and the prompts.
<p class="wrapcode">
MikTeX is currently the most widely used LaTeX distribution on the AU campus.
We are usually behind  a version or two.
</p>
<a href="http://www.tug.org/texlive/">TeX Live</a> provides a comprehensive TeX system for most systems.
<a href="http://www.cemi.rssi.ru/cyrtug/BaKoMa.TeX/index.html">BaKoMa TeX</a> is an inexpensive distribution for Win95 that got some good press,
and it includes <a href="http://www.dante.de/CTAN/fonts/cm/ps-type1/bakoma/">PostScript versions of the Computer modern fonts</a>. (A very nice feature.)
You can purchase a TeX system (with a lot of other useful stuff) from NTG as <a href="http://4tex.ntg.nl/">4allTeX</a>.
<br />
Mac OSX users: use the <a href="http://ii2.sourceforge.net/tex-index.html">i-Installer</a>!
You can also look at <a href="http://www.rna.nl/">Gerben Wierda's</a> 
<a href="http://www.rna.nl/tex.html">teTeX port to OS X</a> 
comes with an i-Installer installation program and gets great reviews.
As a front end, consider Richard Koch and Dirk Olmes's <a href="http://www.uoregon.edu/~koch/texshop/texshop.html">TeXShop</a>.
</div>


<ul>
<li>
<a href="http://www.math.utah.edu/~beebe/fonts/y-and-y-fontnames.html">Y and Y, Inc.</a>
</li>
<li>
<a href="http://www.pctex.com">Personal TeX</a>
</li>
<li>
<a href="http://truetex.com/">TrueTeX</a>
</li>
<li>
<a href="http://www.kagi.com/authors/akt/">OzTeX</a> (for the Mac)
</li>
</ul>







<h3 id="learntex">Learning TeX</h3>

<p>
Novices can get acquainted with LaTeX by looking at <a href="http://www.sci.usq.edu.au/staff/robertsa/LaTeX/">a tutorial</a>.
Once you are using some version of LaTeX,
you are likely to find <em>LaTeX: A Document Preparation System</em>
by L. Lamport to be indispensable.
There are many other good books on TeX and LaTeX.
The free <a id="lshort" href="misc/lshort2e.pdf">lshort2e.pdf</a> has most of what a novice will need.
(Check for the <a href="http://metalab.unc.edu/pub/packages/TeX/info/lshort/english/">most recent version</a>.)
More detail can be found in <a href="http://makingtexwork.sourceforge.net/mtw/">Making TeX Work</a>
and many other excellent books.
If you need to write your own class (and you probably do not!) try <a href="ftp://tug.ctan.org/pub/tex-archive/macros/latex/doc/clsguide.pdf">clsguide.pdf</a>.
</p>

<p>
Users with questions should check
the <a href="http://www.cogs.susx.ac.uk/cgi-bin/texfaq2html">LaTeX FAQ</a>,
and the <a href="http://tug.ctan.org/tex-archive/macros/latex/">LaTeX homepage</a>.
If you are sure you questions are not answered there,
ask on the <a href="news://comp.text.tex">comp.text.tex</a> newsgroup.
<a href="http://tug.ctan.org/">CTAN</a> and
the <a href="http://tug2.cs.umb.edu/">CTAN-Web</a>,
also offer a wealth of information about TeX and LaTeX.
(Be sure to visit <a href="http://ctan.tug.org/tex-archive/help/Catalogue/catalogue.html">Graham Williams's catalogue of information</a>.)
You may also find some useful <a href="http://www.ucc.ie/info/TeX/menu.html">TeX Information</a> at UCC.
If you get truly ambitious, <a href="http://www.cs.utk.edu/~eijkhout/texbytopic.pdf">Victor Eijkhout's <em>TeX by Topic</em></a> is now available online.
(Most users will never need such a detailed understanding of TeX, however.)
</p>

<h3 id="latex_ide">LaTeX IDE</h3>


<ul>
<li>
<li>
<a id="texniccenter" href="http://www.texniccenter.org/">TeXnicCenter</a>
is a popular LaTeX IDE for Windows&reg; users (License: GPL).
</li>
<li>
<a href="http://code.google.com/p/texworks/">TeXworks</a>
</li>
is a popular LaTeX IDE that ships with MiKTeX (License: GPL).
<li>
</li>
<a href="http://www.winshell.de/">WinShell for LaTeX</a>
</li>
<li>
<a href="http://www.projectory.de/texshell/">TeXShell</a> is a free, open source LaTeX shell and editor for Windows.  
</li>
<li>
<a href="http://www.latexeditor.org/">LEd</a> is currently gratis but not open source.
Looks like a nice LaTeX IDE,
but I have not been able to completely understand the license or find the source.
</li>
<li>
<a href="http://www.xm1math.net/texmaker/">Texmaker</a> is a cross platform LaTeX editor that is getting good reviews
(License: GPL).
</li>
<li>
<a href="http://www.winedt.com/">WinEdt</a> is a popular and explicitly TeX oriented editor.
(Do not confuse WinEdt with <a href="http://www.winedit.com/">WinEdit</a>,
a high quality programmer's editor that is not explicitly TeX oriented.)
</li>
<li>
<a href="http://vgoulet.act.ulaval.ca/en/ressources/emacs/">emacs</a>
with Auctex can provide a useful environment for power users.
So can <a href="http://www.vim.org">Vim</a>
with <a href="http://vim-latex.sourceforge.net/">Vim-LaTeX</a>.
</li>
</ul>


<h3 id="addchart">Adding drawings to LaTeX documents</h3>

<p>
LaTeX provides a basic picture environment that is pretty powerful.
Still, you will often need more.
You can easily include PDF drawings in your documents.
See <a href="#latexgraphics">Graphics for LaTeX</a> for more details.
</p>


<h3 id="texconvert">LaTeX Format Conversion</h3>

<p>See the more complete list at <a href="http://www.loria.fr/services/tex/english/outils.html">http://www.loria.fr/services/tex/english/outils.html</a>.
</p>

<h4>From LaTeX</h4>

<p>
<a href="http://www.tug.org/utilities/texconv/textopc.html">TeX to PC</a> has a more complete discussion.
One interesting possibility is <a href="http://plastex.sourceforge.net/plastex/">plasTeX</a>,
which parses LaTeX for output in various formats.
More extensive conversion capabilities may be provided by <a href="http://johnmacfarlane.net/pandoc">pandoc</a>.
(Language: Haskell; License: GPL)
</p>

<p>
If you use LyX,
there is a
<a href="http://wiki.lyx.org/Tools/LyX2OpenOffice">LyX (via LaTeX) to OpenOffice</a> format converter.
(See the same URL for a Mac front end.)
</p>

<h5>LaTeX to PDF</h5>

<p>
You will often want to produce PDF files from your .tex files.
(The PDF files can be read by anyone with access to a <a href="#pdfviewers">PDF viewer</a>.)
I have had excellent results using dvipdfm,
which is included in most LaTeX distributions.
Many people report excellent results using pdflatex,
which is part of most LaTeX distributions.
Also see <a href="http://www.cl.cam.ac.uk/~mgk25/publ-tips.html">Markus Kuhn's tips</a> on how to use (La)TeX to
effectively produce highest-quality <acronym class="help" title="Portable Document Format">PDF</acronym> files.
</p>


<ul>
<li>
divpdfm:
<br />
Just use it to process your .dvi file.
</li>
<li>
pdflatex:
<br />
Just use it to process your .tex file.
<a href="http://www-hep.colorado.edu/~fperez/lyxport/">LyxPort</a>
can help you convert with pdflatex.
If you are including graphics, be sure to read about <a href="http://www.math.upenn.edu/tex_docs/help/faq/uktug-faq/FAQ273.html">graphics extensions</a>,
noting that pdflatex does not support EPS files.
</li>
<li>
<a href="#print2pdf">Print to PDF.</a>
</li>
</ul>

<h5>LaTeX to HTML</h5>
<p>
Note that a successful translation into HTML or MathML can subsequently be read by any modern word processor.
(Of course it will not look as good as in LaTeX!)
</p>

<ul>
    <li>Ian Hutchinson's <a href="http://hutchinson.belmont.ma.us/tth/">
    TtH translator</a>, which does amazingly well in converting <b>T<sub>E</sub>X</b> math to HTML using the built-in fonts of your computer.
    The <a href="http://hutchinson.belmont.ma.us/tth/tth-noncom/tth_exe.zip">MSDoS executable</a>, which runs from the DOS prompt under Windows, may be used for non-commercial purposes only.
    Hutchinson also offers a <a href="http://hutchinson.belmont.ma.us/tth/mml/"><b>T<sub>E</sub>X</b> to MathML</a> converter, which should soon be very useful (i.e., as soon as more browsers and word processors support MathML).
    </li>
    <li><a href="http://para.inria.fr/~maranget/hevea/">HeVeA</a> converts  <b>T<sub>E</sub>X</b> to HTML 4.0 transitional.
    </li>
    <li>
    Eitan Gurari's <a href="http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html">tex4ht</a> is supposed to be able to translate LaTeX into MathML.
    Installation is rumored to be difficult unless you carefully follow good directions,
    like <a href="http://facweb.knowlton.ohio-state.edu/pviton/support/tex4ht.html">Philip Viton's directions</a>.
    </li>
    <li>
    Philip A. Viton's WinNT version of Peter Wilson's <a href="http://archadserver.arch.ohio-state.edu/crp/files/index.htm#ltx2x"> ltx2x</a>, for detex'ing and html'ing your documents, with some extensions. 
    </li>
    <li>
    Steve Mayer's  <a href="http://www.mayer.dial.pipex.com/tex.htm">TeX Converter</a> is a Windows front-end for using Hevea, Tth, Tex4ht, and Texify to convert <b>T<sub>E</sub>X</b> files. (A recent upgrade allows Hevea to use multiple Scientific Word style files, excluded files (eg tcilatex.tex), saveable configurations and text/info output.)
    </li>
    <li>
    latex2html:
    <br />
    This is a very popular approach. See
    <a href="http://cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/latex2html.html">All About LaTeX2HTML</a>
<a href="http://www-hep.colorado.edu/~fperez/lyxport/">LyxPort</a> can help you convert with latex2html.
    </li>
    <li>
    <a href="http://www.ktalk.com/index.html">TexPort</a>:
    <br />
    can apparently port a good bit of LaTeX to WordPerfect or Word, including math, simple tables, and macros.
    </li>
    <li><a href="http://web.ukonline.co.uk/julian.smart/tex2rtf/">tex2rtf</a> converts basic LaTeX to HTML (no math).
    </li>
    <li>
    Version 5+ of Scientific Word (and possibly Scientific Notebook) offer substantial abilities to importing LaTeX and export MathML.
    </li>
</ul>

<div>
You can also go LaTeX to HTML via PDF:
<ul>
<li>
<a href="http://pdftohtml.sourceforge.net/">pdftohtml</a>
</li>
<li>
Convert <a href="#latex2word">PDF to Word</a>,
which then can be exported as HTML.
</li>
</ul>
</div>

<h5>LaTeX to PostScript</h5>

<ul>
<li>
<a href="http://tug.ctan.org/tex-archive/systems/msdos/dviware/dvips/">dvips</a>:
<br /> 
possibly the easiest way to produce PostScript from your LaTeX document.
Just use dvips to process your .dvi file.
<a href="http://www-hep.colorado.edu/~fperez/lyxport/">LyxPort</a>
can help you convert with pdflatex.
</li>
<li>
Adobe Acrobat:
<br />
just print your .dvi file to the Distiller.
</li>
<li>
You can also create PostScript (.ps) files by
installing a driver for a PostScript printer,
selecting this printer, and printing to a file.
Windows users may want to try the AdobePS HP Laserjet 5P/5MP driver,
which you can download from the Adobe website.
A document may take as much as 35 M to store the print cycle.
If you have trouble viewing the file with GhostScript,
try removing the first line in your .ps file if it contains a
non-<a href="http://www.jimprice.com/jim-asc.htm">ASCII</a> symbol.
(For some printers, including the HP Laser Jet,
this line just turns on the postscript mode.)
You can also try opeing the file in a UNIX text editor.
If you see a huge line instead of usual .ps text,
then you need a to change Windows linebreaks to UNIX linebreaks.
Good luck.
</li>

<li>
<a href="http://www.cs.wisc.edu/~ghost/">GhostScript and GhostView</a> let you view and print PostScript files.
GhostScript includes ps2pdf, for generating .pdf files.
Be sure to see the <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=dvips-pdf">relevant FAQ</a>
and a <a href="http://phaseportrait.blogspot.com/2007/06/bounding-boxes-and-eps-to-pdf.html">useful discussion</a>.
(To convert an entire direction at the Windows command line,
you can use: <tt>for %i in (*.eps) do epstopdf --gsopt=-dPDFSETTINGS=/prepress %i</tt>.
Windows users may be interested in the small, fast <a href="http://www.rops.org/">RoPS</a> interpreter,
which has a free Language Level 1 version.
(<a href="http://tetley.rops.org/sourcecode/">RoPS source code</a> appears to be available.)
Serious PostScript programmers may profit from <a href="http://www.quite.com">PSAlter</a>'s helpful debugging facilities.
</li>
</ul>



<h5 id="latex2word">LaTeX to Word or Word Perfect</h5>

<ul>
<li>
If you do not have much math in you document, you can produce a PDF version
and then use Acrobat 7+ to convert this to Word format.
</li>
<li>
<a href="http://latex2rtf.sourceforge.net/">latex2rtf</a>
</li>
<li>
<a href="http://www.wxwindows.org/tex2rtf/index.htm">TeX2RTF (UK site)</a>
</li>
<li>
<a href="http://www.word2tex.com/">TeX2Word</a>.
(Commercial, with free 30 day trial available.)
</li>
<li>
Version 5+ of Scientific Word (and possibly Scientific Notebook) offer substantial abilities to importing LaTeX and export rich text format (RTF) documents.
</li>
<li>
After LaTeX to PDF,
you might try <a href="http://www.investintech.com/">Able2Extract</a> to convert the PDF to Word or WordPerfect.
(Let me know if you try this.)
</li>
</ul>
 
 
<h5>LaTeX to MathML</h5>
 
<ul>
<li>
<a href="http://www.orcca.on.ca/MathML/texmml/textomml.html">TeXtoMML</a>
</li>
<li>
<a href="http://www.blahtex.org/">BlahTeX</a>
</li>
<li id="itex">
<a href="http://golem.ph.utexas.edu/~distler/blog/">itex2mml</a>
(Some helpful material remains on the <a href="http://pear.math.pitt.edu/mathzilla/itex2mml.html">old site</a>.)
See the <a href="http://golem.ph.utexas.edu/~distler/blog/itex2MMLcommands.html">list of itex commands</a>.
Interesting, the <a href="#abiword">AbiWord</a> word processor supports itex for equation editing.
</li>
<li>
<a href="http://hutchinson.belmont.ma.us/tth/mml/">TtM</a>
</li>
</ul>



<h4>To LaTeX</h4>
<ul>
    <li>
    Version 5 of Scientific Word (and possibly Scientific Notebook) offers substantial abilities in importing (and exporting) rich text format (RTF) documents.
    Scientific Word reads many LaTeX files,
    so this offers some format conversion possibilities.
    </li>
    <li>
    <a href="http://sourceforge.net/projects/rtf2latex2e/">rtf2latex2e</a> translates rich text format (RTF) into LaTeX. Claims to handle text formatting, tables, figures, and equations, and to produce LaTeX files that are quite readable and suitable for editing.
    </li>
    <li>
    <a href="http://www.hj-gym.dk/~hj/writer2latex/">Writer2LaTeX</a> converts Open Office and Star Office documents to LaTeX, including any formulae.
    </li>
    <li>
    Chikrii Softlab's shareware <a href="http://www.word2tex.com/">Word2TeX</a> is an output filter for Word that converts even tables and math. It has some minor bugs that can be fixed by manually editing the TeX output.
    They now offer a TeX2Word conversion as well.
    </li>
    <li>Spreadsheets to LaTeX:
    <br />
    <a href="http://calc2latex.sourceforge.net/">calc2latex</a>
    converts OpenOffice spreadsheets.
    <br />
    <a href="http://www.jam-software.com/freeware/xl2latex.zip">Excel2Latex</a> converts Excel spreadsheets to LaTeX and retains quite a bit of formatting information.
    If you have trouble locating this, you can read a spreadsheet into GAUSS and then use the GAUSS archive's conversion utility.
    </li>
    <li><a href="mailto:techexpl@us.ibm.com">ltx2tcx</a> will process a LaTeX document, examine included files and make use of the associated generated .aux and .bbl files to produce a collection of techexplorer enhanced .tcx files.
    </li>
    <li><a href="http://www.alphaworks.ibm.com/formula/texml">TeXML</a> converts XML to TeX.
    </li>
    <li>
    <a href="http://www.winfield.demon.nl/">AntiWord</a> converts Word to plain text,
    which you can use in your LaTeX documents.
    </li>
</ul>




<h3 id="present">Presentations</h3>

<div>
Existing presentation applications have serious limitations.
<ul>
<li>
Editing is slow
</li>
<li>
Reformatting is cumbersome.
</li>
<li>
Content revision cannot easily be automated.
</li>
<li>
Math handling is poor.
</li>
</ul>
On the other hand, for short one-off bullet-point presentations,
with a few images,
these applications are very easy to use.
(E.g., you can just paste your images into a variety of templates.)
</div>

<div>
If you want to escape the above limitations,
you want to be able to create your presentations with a text editor,
including images by referencing their files.
Three obvious candidates are
<ul>
<li>
reStructuredText with an appropriate slide writer
</li>
<li>
LaTeX with an appropriate document style.
</li>
<li>
<a href="http://member.wide.ad.jp/wg/mgp/">MagicPoint</a> (X11-based, BSD license)
</li>
</ul>
</div>

<p>
A fuller discussion of options can be found in
<a href="http://www.miwie.org/presentations/presentations.html">Wiedman on Screen Presentation Tools</a>.
Here are some options using reStructuredText.
</p>
<pre>
- rst2pdf http://lateral.netmanagers.com.ar/stories/BBS52.html
  (Good math handling via Matplotlib's mathtext!)
- rst2s5 http://docutils.sourceforge.net/docs/user/slide-shows.html
  http://docutils.sourceforge.net/docs/user/slide-shows.html
  http://www.python.org/doc/slideshows/5min-reST-demo.txt
- Bruce http://pypi.python.org/pypi/bruce
  http://sites.google.com/site/r1chardj0n3s/howto
  (You can embed a Python interpreter in your presentation page!)
- rst2odp http://panela.blog-city.com/rst2odp_on_pypi.htm
- rst2beamer http://www.agapow.net/programming/python/rst2beamer
  http://home.cs.siue.edu/~rkrauss/python_website/
- rst2slidy (cannot find it, but here's Slidy:
  http://www.w3.org/Talks/Tools/Slidy )
</pre>
<p>
Roberto Alsina mentions that if you choose rst2pdf then
fancy transitions are hard,
handouts have to be another document,
there is no way to easily center something vertically,
and you need to create different versions for different screen aspect ratios.
(On the other hand,
everything is in a single file,
your PDF can play almost anywhere,
and you know exactly how it will look.) 
</p>


<p>
If you know LaTeX,
the  <a href="http://latex-beamer.sourceforge.net/">beamer</a> is great,
and you can compile beamer presentation directly with pdftex.
(I found getting started with the <tt>beamer</tt> document class using MiKTeX's pdflatex to be completely painless.)
Some people prefer
<a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/powerdot.html">powerdot</a>
(which supercedes <a href="http://prosper.sourceforge.net/prosper.html">Prosper</a>).
With powerdot you will need to go .tex to .dvi to .ps to .pdf.
(Many integrated TeX environments can automatically implement that sequence for you.)
Some people like the commercial <a href="http://www.utopiatype.com.au/products/ubundle.html">Utopia presentations bundle</a>.
</p>

<ul>
<li>
For presentations, using <acronym class="help" title="Portable Document Format">PDF</acronym> files
(with Acrobat Reader or even GhostView or xpdf)
as the viewer is superior to relying on your dvi previewer.
You can produce <acronym class="help" title="Portable Document Format">PDF</acronym> slides with <a href="http://tug.ctan.org/cgi-bin/CTANcataloguesearch.pl?CATSTRING=pdftex">pdflatex</a> or dvipdfm.
A decent, very simple approach is to use the landscape option for the slides class 
(or better yet use the <a href="http://prosper.sourceforge.net/prosper.html">Prosper</a> class)
and then make sure the <acronym class="help" title="Portable Document Format">PDF</acronym> files know about the page size.
One normally passes such information through the .dvi via
\special commands.
Dvipdfm understands only \special commands that start with "pdf:".
The documentation of dvipdfm gives the following example for landscape pages (letter size paper):
<br /> 
\special{pdf: pagesize width 11.0truein height 8.5truein}
<br /> 
More generically (with the landscape documentclass option):
\special{pdf: pagesize width \the\paperwidth\space height \the\paperheight}
<br />
In pdf{la)tex there are several commands (all starting \pdf...)
that function similar to \special. For example
<pre>
  \setlength{\pdfpagewidth}{11in}
  \setlength{\pdfpageheight}{8.5in}
</pre>
should give you a landscape slide (on screen) in pdflatex. You may
need to specify in AcroRead's print dialog you want the page
rotated to print properly.
<br /> 
See <a href="http://www.math.uakron.edu/~dpstory/pdf_demos.html">David Story's discussion</a>, which I rely on here.
Once you have developed your slides, you can use either the freeware <a href="http://tug.ctan.org/cgi-bin/CTANcataloguesearch.pl?CATSTRING=ppower">PPower4</a> (a pdf post processor written in Java) or <a href="http://ls1-www.cs.uni-dortmund.de/~lehmke/TeXPower">texpower</a>, which can be used to create dynamic effects and works well with pdfslide, pdfscreen, and other slide design classes and packages.
<br />
Btw, if you are using both latex and pdflatex, then
you probably want to omit your .eps and .png file extensions and add a \DeclareGraphicsExtensions command to limit the possible extensions to these (otherwise latex may try too
many extension, wasting time and pool space).
The grfguide and epslatex.pdf cover the \DeclareGraphicsExtensions command.
</li>
</ul>

<p>
If for some reason you feel you must use PowerPoint<sup>&reg;</sup>,
you can insert LaTeX style math by using the <a href="http://raw.cs.berkeley.edu/texpoint/TeXPoint.htm">TeXPoint</a> plugin.
Note too that you can script your PowerPoint presentations using Python:
use the win32com module to access the com interface.
(Easier than it sounds, as illustrated by some <a href="http://code.google.com/p/econpy/source/browse/trunk/utilities/mso.py">simple examples</a>.)
</p>

<p>
There are a few open source presentation programs that are not LaTeX based.
They are more like using PowerPoint.
<a href="http://www.openoffice.org/">OpenOffice</a> includes a presentation program.
GNOME Office includes <a href="http://www.gnome.org/projects/agnubis/">Agnubis</a>,
but it is still work in progress.
</p>

<p id="reportlab">
Another simple but powerful possibility.
The <a href="http://www.reportlab.org/index.html">ReportLab Toolkit</a> includes <a href="http://www.reportlab.org/python_point.html">PythonPoint</a> for presentation creation.
It is amazingly powerful, but a bit complex.
To make things much easier,
you can very simply <a href="http://docutils.sourceforge.net/sandbox/richard/pythonpoint/">generate PythonPoint documents</a> from 
<a href="#rest">restructured text (reST)</a>.
Once you have the software installed,
this is about as easy as it can get!
</p>

<h4>Presentations via RestructuredText</h4>

<div>
You can produce very nice presentations using <a href="#rest">reStructuredText</a> with one of it presentation oriented writers.
<ul>
<li> 
S5 or <a href="http://www.netzgesta.de/S5/">S5 Reloaded</a>. (License: GPL)
</li>
<li> 
<a href="http://pypi.python.org/pypi/bruce">Bruce</a> is a very interesting presentation option.
It supports images and video, and even interactive Python sessions.
</li>
</ul>
</div>

<p>
<a href="http://www.masterviews.com/2004/11/21/xhtml_to_powerpoint_browserbased_css.htm">S5</a> [<a href="http://meyerweb.com/eric/tools/s5/">2</a>] can simply create beautiful browser based presentations.
Instead of editing HTML you can use <a href="#rest">reST</a> and convert the text file 
to a slide show with <a href="http://homepage.hispeed.ch/py430/python/index.html#rst2s5">rst2s5</a>.
Also see <a href="http://www.netzgesta.de/S5/">S5 Reloaded</a> and <a href="http://www.robertnyman.com/ajax-s/">AJAX-S</a>.
</p>

<p>
Falling short of a presentation package but still potentially useful
for report writing is <a href="http://gael-varoquaux.info/computers/pyreport/">PyReport</a>,
which compiles a Python script and its (textual and graphical) output into a PDF file.
</p>

<p>
Last but not least:
for incredible animated presentations,
the technically inclined may consider <a href="http://www.cs.umd.edu/~nspring/slithy.html">Slithy</a>.
</p>


<h3 id="textables">Tables</h3>

<p>
One place where a good GUI is nice is for the visual formatting of tables.
Here a nice GUI can provide a real advantage over markup.
This need not mean abadoning LaTeX.
</p>

<p>
<a href="#latexgui">LyX</a> supports table editing.
(You can also <a href="http://wiki.lyx.org/Tips/CopyTablesFromSpreadsheets">copy table data from spreadsheets</a> to LyX.)
</p>

<p>
(Commercial options include <a href="http://www.mackichan.com">Scientific Notebook</a> and possibly <a href="http://www.g32.org/latable/">LaTable</a>.)
When the structure and content of the tables is the dominant consideration, however,
LaTeX tables can often be easily and automatically generated.
For example,
many econometric packages will produce LaTeX formatted tables of results.
</p>

<p>
If your chosen econometric package does not support LaTeX table generation,
you still have a variety of options.
</p>
<ul>
<li> 
<a href="http://brouits.free.fr/csv2latex/">csv2latex</a> is a C program that converts CSV files to LaTeX tables.
(Open office users may wish to combine this with <a href="http://www.molspaces.com/d_misc1.php">calc2latex</a>.
</li>
<li> 
<a href="http://www.american.edu/academic.depts/cas/econ/gaussres/utilitys/latex.src">wrilatex</a>
writes a GAUSS matrix or string array to a LaTeX table.
</li>
<li> 
<a href="http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectType=file">matrix2latex</a>
writes a MATLAB matrix to a LaTeX table.  
</li>
<li> 
<a href="http://econ.ucsd.edu/muendler/docs/stata/est2tex.html">est2tex</a> for Stata.
</li>
<li>
<a href="http://www.jam-software.com/freeware/xl2latex.zip">Excel2Latex</a> converts Excel spreadsheets to LaTeX and retains quite a bit of formatting information.
<a href="http://www.hha.dk/~skj/Xl2latex.xls">xl2latex</a> performs a similar function.
If you have trouble locating these,
you can read a spreadsheet into GAUSS and then use the GAUSS archive's wrilatex conversion utility.
</li>
</ul>

<h3 id="metalatex">Meta Formats for LaTeX</h3>

<ul>
<li> 
Berthold Höllmann's <a href="http://starship.python.net/crew/bhoel/">LaTeX.py</a>
lets you "write your LATEX code in python strings, generate the LATEX output file, and process it by latex and dvips."
Lots of power with a minimum of fuss.
</li>
<li id="rest">
<a href="#metafmt">reStructuredText</a> has some useful <a href="http://docutils.sourceforge.net/tools/editors/README.html">editor support</a>.
</li>
<li> 
It should be possible to use the apparently powerful <a href="http://www.pytex.org/">PyTeX</a>,
but I have not tried.
Plain TeX is supported.
</li>
</ul>


<h3 id="othertex">Other TeX Resources</h3>

<p>
There are extensive <a href="#bibtex">citation management</a> resources.
</p>

<ul>
<li><a href="misc/epslatex.pdf">epslatex.pdf</a> has many hints for working with graphics.
</li>
<li>The hyperref package produces DVI files that work with
both DVIWindo previewer (hyper-text jumps etc.) and with DVIPSONE PS printer driver for passing pdfmarks to the Acrobat Distiller.<br />
<tt>    \usepackage[dviwindo,backref]{hyperref}</tt>
<br />
Be sure to use the `dviwindo' option,
and make sure you have the latest hyperref.dtx/hyperref.ins
</li>
<li><a href="http://www.forkosh.com/pstex/index.htm">TeX Font Guide</a> can help you get post-script fonts working with your TeX system.
</li>
<li><a href="http://e-math.ams.org/tex/">AMS TeX Resources</a>
</li>
<li> <a href="http://www.cmis.csiro.au/Graham.Williams/TeX/catalogue.html">LaTeX Catalogue</a>
</li>
<li> <a href="http://www.win.tue.nl/win/cs/wp/mathspad">MathSpad is freely available for Unix.</a>
</li>
<li> <a href="http://www.ma.adfa.oz.au/Local/Info/auc-tex/auc-tex_toc.html">AUC-TeX</a> is a much enhanced LaTeX mode for GNU Emacs.
</li>
<li><a href="http://www-3.ibm.com/software/network/techexplorer/">
TechExplorer Hypermedia Browser</a> is a browser ``plug-in'' that allows viewing of TeX/LaTeX files on the Web.
</li>
<li>A java dvi viewer, called
<a href="http://www.geom.umn.edu/java/idvi/">idvi</a>.
</li>
<li> The flexible indexing system
<a href="http://xindy.sourceforge.net/">Xindy</a> is a replacement for makeindx.
</li>
<li>
There are many useful packages at <a href="http://www.ctan.org">CTAN</a>.
I've often needed endnotes.sty to produced endnotes for a paper.
Academics may be interested in Mike Piff's answers package (answers.sty).
</li>
</ul>


<h4>Compiling TeX</h4>

<ul>

<li>
Using
<a href="#scons">SCons</a> for TeX compilation might be a good idea, or it might be overkill.
In the latter case, consider <a href="http://www.pps.jussieu.fr/~beffara/soft/rubber/">Rubber</a>,
a more modest replacement for makefiles in a TeX environment. (Language: Python.)
</li>
<li>
<a href="http://texcatalogue.sarovar.org/entries/latexmk.html">latexmk</a>
is a perl based replacement for makefiles.
</li>
<li>
<a href="http://latex-mk.sourceforge.net/">LaTeX-Mk</a>
"is a collection of makefile fragments and shell scripts for simplifying the management of small to large sized LaTeX documents".
</li>
</ul>





<h2 id="matrixlanguages">Scientific Programming Languages</h2>

<p>
Much scientific programming is done in very high level languages.
Two factors to consider in making a language choice are
what software in your area is already written in the language,
and how much original coding you will be doing.</p>

<p>
Being able to write code in one matrix programming language and run it in another environment can be useful.
Examples include 
Treiber's <a href="http://code.google.com/p/pym/">pym</a> Python program for converting MATLAB to Python,
<a href="http://www.cameronrookley.com">Rookley's</a>
<a href="http://www.cameronrookley.com/gtoml/maingtm.html">gtoml</a>
Perl program for converting Gauss code to Matlab,
and Christopher Stawarz's
<a href="http://software.pseudogreen.org/i2py/">i2py</a> 
script for coverting
<a href="http://www.rsinc.com/">IDL</a> to <a href="http://www.python.org">Python</a>.
If you want to create a translator,
consider <a href="http://www.dabeaz.com/ply/">PLY</a>
(a Python implementation of lex and yacc).
</p>



<h3 id="numpy">NumPy</h3>

<p>
NumPy is one reason <a href="http://www.stat.washington.edu/~hoytak/_static/papers/why-python.pdf">why Python rocks for research</a>.
</p>

<p>
My favorite approach to matrix (and multi-dimesional array) programming is <a href="http://numpy.scipy.org/">NumPy</a> (License: BSD; depednecy: Python).
This is a <a href="#python">Python</a> package (but it is very fast because it is written as a C extension).
This means you can have full access to the ease of use and to the object-oriented power of the <a href="#python">Python</a> programming language
while doing serious scientific programming.
This is a very high quality library.
Additionally, an extensive scientific computing environment is provided by <a href="http://www.scipy.org/">SciPy</a>. (License: BSD; Dependency: NumPy.)
For publication quality graphics,
add the excellent graphics package <a href="#matplotlib">Matplotlib</a>.
(License: BSD; Dependency: NumPy.)
</p>

<p>
You can find everything packaged together for a single install.
For example: NumPy, SciPy, and Matplotlib are included in the <a href="https://www.enthought.com/products/canopy/">Enthought</a> Canopy distribution,
along with <em>many</em> other useful packages.
Another possibility is the <a href="http://continuum.io/">Anaconda distribution</a>
Here are some additional <a href="pythonresources.html">Python resources for scientific computing</a>.
</p>

<p>
Here are some <a href="pythonresources.html">Python resources for scientific computing</a>.
Many scientific programming applications can be found on the <a href="http://www.scipy.org/wikis/topical_software/TopicalSoftware">SciPy Topical Software Wiki</a>.
<a href="http://dirac.cnrs-orleans.fr/ScientificPython/">ScientificPython</a> offers some useful scientific and visualization modules.
The are also some additional <a href="http://probstat.sourceforge.net/">probability and statistics utilities</a> available.
<a href="http://www.ime.usp.br/~pjssilva/pycoin/index.html">Pycoin</a> provides a Python interface to some of the <a href="http://www.coin-or.org/">COIN</a> operations research packages.
Additional functionality can be obtained from the <a href="http://www.cdc.noaa.gov/people/jeffrey.s.whitaker/python/nagpy/">NAGpy</a> interface to the NAG Fortran library
or the <a href="http://py-ml.sourceforge.net/">PY-ML</a> interface to Mathematica.
Python also has modules for interacting with <a href="#gnuplot">gnuplot</a> and <a href="#Rproject">R</a>.
You may also want to see the <a href="http://py.vaults.ca/parnassus/apyllo.py/684222876">Python math tools at the Vaults of Parnassus</a>.
If you need to build GUIs as part of your Python project,
consider the <a href="http://boa-constructor.sourceforge.net/">Boa Constructor</a>.
Additional Python stuff you might find useful for scientific computing:
<a href="http://paida.sourceforge.net/">PAIDA</a> (a Python implementation of the <a href="http://aida.freehep.org/index.thtml">AIDA</a> abstract interface for data analysis),
and the resources listed at <a href="http://www.astro.cornell.edu/staff/loredo/statpy/">StatPy</a>,
and possibly various <a href="http://yaroslav.hopto.org/pubwiki/index.php/ai-python">AI resources</a>.
<a href="http://mdp-toolkit.sourceforge.net/">Modular toolkit for Data Processing (MDP)</a> is a Python data processing library implementing Principal Component Analysis (PCA), Independent Component Analysis (ICA), Slow Feature Analysis (SFA), and Growing Neural Gas (GNG).
Finally, it is worth poking around <a href="http://cheeseshop.python.org/">CheeseShop</a>.
</p>

<h3>Java for Scientific Programming</h3>

<p>
Java does not seem to have any eqivalent of Python’s <a href="#scipy">SciPy</a> package for scientific programming.
Pieces of the functionality can be obtained as follows.
(But stick with SciPy if you can.)
</p>

<ul>
<li>
<a href="http://commons.apache.org/proper/commons-math/">Apache Commons Math</a>
for some basic linear-algebra and optimization functionality.
</li>
<li>
<a href="http://acs.lbl.gov/ACSSoftware/colt/">Colt</a> for multi-dimensional arrays and basic statistics.
</li>
<li>
NOAA’s <a href="http://www.epic.noaa.gov/java/sgt/">Scientific Graphics Toolkit</a>.
</li>
</ul>

<h3 id="other-mpl-free">Other Free Matrix Programming Languages</h3>

<ul>
<li>
<a href="http://julialang.org/">Julia</a> is a promising “high-level, high-performance dynamic programming language for technical computing”.
(License: MIT)
This is a very interesting project: already very usable, and under active development.
</li>
<li>
<a href="http://pdl.perl.org/">Perl Data Language</a> introduces a new data structure:
the "PDL numerical array," often referred to as a "piddle."
A piddle can contain a large block of efficiently-stored numbers for manipulation with normal mathematical expressions.
Each operation is implemented via compiled C code,
so it's nearly as fast as a C program.
</li>
<li>
<a href="http://www.simunova.com/de/node/24">Matrix Template Language 4 (MTL4)</a>
provide matrix manipulations for C++ users.
</li>
<li>
<a href="http://root.cern.ch/">ROOT</a> is an extremely capable "object-oriented data analysis package"
developed at <a href="http://public.web.cern.ch/public/">CERN</a>.
(License: LGPL; Language: C++)
</li>
<li>
<a href="http://scilabsoft.inria.fr/">SciLab</a>, a free MatLab-like numerical computation package.
(It also has capabilities in <a href="#CAS">symbolic mathematics</a>,
especially polynomials and polynomial matrices.)
</li>
<li>
<a href="http://lush.sourceforge.net/index.html">Lush</a> is a Lisp based matrix programming language that includes both an interpreter (for ease of development) and a compiler (for speed).
It allows inlined C code.
Lush is free and open source software.
As a bonus it allows easy development of interactive 2-D graphics.
</li>
<li>
<a href="http://dhmunro.github.io/yorick-doc/">Yorick</a> is a fast, cross-platform, interpreted matrix programming language that is in wide use in physics. (License: BSD)
Yorick includes the Gist graphics package,
which can be used separately.
For example,
<a href="http://hifweb.lbl.gov/public/software/gist/pygist_html/pygist.html">PyGist</a> provides a Python interface to the Gist graphics package.
This allows extremely fast graphics plotting.
</li>
<li id="octave"> 
<a href="http://www.octave.org/">Octave</a> is a high-level language,
resembling MatLab,
primarily intended for numerical computations.
Octave is free and open source software.
It provides a convenient command line interface for solving linear and nonlinear problems numerically.
It is possible to <a href="http://octave.sourceforge.net/">install Octave under Windows</a>,
but the Windows installation of Octave is a bit large since it includes an installation of Cygwin.
Octave uses <a href="#gnuplot">gnuplot</a> for plotting.
</li>
<li>
<a href="http://euler.rene-grothmann.de/">Euler Math Toolbox (EMT)</a> supports matrix computations with a focus on the production of high quality graphics.  Euler also provides symbolic math via Maxima and offers a notebook interface. (License: GPL)
</li>
<li>
<a href="http://www.aplusdev.org/">A+</a> is a modern APL derivative popular in the financial world.
(License: GPL.)
Last stable release: 2008.
Not currently implemented for Windows.
A related language is <a href="http://www.hakank.org/k/">K/Kona</a>.
</li>
<li> Harmonic Software offers <a href="http://www.omatrix.com/">O-Matrix Light</a> for free (one a time-limited basis) and there is an
<a href="http://www.omatrix.com/manual/">online manual</a>.
It is a reasonable choice for a matrix programming language.
Even the full version is very reasonably priced for academic users.
</li>
<li>
<a href="http://www.jsoftware.com/">J</a> is a powerful array-oriented functional language. (License: GPL)
The APL-influenced syntax is rather unusual.
</li>
<li>
The DOS, UNIX, and now Windows console versions of the matrix programming language
<a href="http://www.nuff.ox.ac.uk/Users/Doornik/">Ox</a> are freeware.
Ox is similar to C++ and the econometric implementations resemble GAUSS.
Ox comes with a gauss-to-ox interpreter called OxGAUSS,
which translates GAUSS codes into Ox programs.
</li>
<li>
<a href="http://www.geo.fmi.fi/prog/tela.html">Tela (the TEnsor LAnguage)</a>  is a numerical computing environment emphasizing numerical simulation pre- and postprocessing work.
Graphics support appears strong. 
</li>
<li>
The <a href="http://math.nist.gov/tnt/">Template Numerical Toolkit (TNT)</a>
"is a collection of interfaces and reference implementations of numerical objects useful for scientific computing in C++" offered free by the NIST.
<a href="http://www.crb.ses.man.ac.uk/matclass/index.htm">MatClass</a> is a C++ matrix class written by Chris Birchenhall.
<a href="http://webnz.com/robert/download.html">newmat</a> is a C++ matrix class written by Robert B Davies.
Both can also be found at <a href="http://netec.mcc.ac.uk/CodEc/C_Cpp.html">CodEc</a>.
Dirk Eddelbuettel's review of using C++ and the newmat08 matrix classes for econometric purposes notes that
it is free and portable (as is the gnu C and C++ compiler),
being real C++ it can be linked with other C, C++, or Fortran (using f2c) libraries you happen to use, and once it is compiled it runs faster than the obvious alternatives.
Also, the <a href="http://www.gnu.org/software/gsl/">GNU Scientific Library (GSL)</a> includes linear algebra components.
(<a href="http://pygsl.sourceforge.net/">PyGSL</a> provides a Python interface to GSL.)
</li>
<li><a href="http://math.nist.gov/javanumerics/">Java Numerics</a>
includes a <a href="http://math.nist.gov/javanumerics/jama/">Java Matrix package</a>.
<a href="http://opsresearch.com/">OpsResearch</a> has much useful free code.
</li>
<li>
Verson 3 of the LAPACK numerical linear algebra subroutine library is now available from the Netlib Repository at Oak Ridge National Laboratory.
Also, the <a href="http://sourceforge.net/projects/f2j/">Fortran to Java</a> project offers a 
Java version of the LAPACK routines.
</li>
</ul>

<h3 id="other-mpl-free">Support for Matrix Programming in Other Languages</h3>

<p>
I mention only a couple important items from the endless possibilities.
</p>

<div>
Java:
<br />
<a href="https://github.com/mikera/vectorz">VectorZ</a> provides fast double-precision vector and matrix math
and supports n-dimensional arrays.
<br />
<a href="https://sites.google.com/site/piotrwendykier/software/parallelcolt">Parallel Colt</a>
provides support for dense and sparse linear algebra.
This is a dependency of <a href="http://incanter.org/">Incanter</a>,
which provides statistical data processing and visualization functionality.
<br />
<a href="http://nd4j.org/">ND4J</a> is a library for scientific computing on the JVM. (License: Apache 2.0)
A very promising project, but (as of 2015) it is far from mature.
</div>

<div>
C:
<br />
<a href="http://www.cs.utexas.edu/~flame/web/">FLAME</a> is a high-performance dense linear algebra library.
</div>

<h3>MATLAB and GAUSS</h3>

<p>
For econometrics, the biggest collections of extant code are in Gauss and MATLAB,
with Python code perhaps poised to catch up.
Of these two, Gauss has the advantage of real array broadcasting,
while MATLAB relies on the relatively clumsy <code>repmat</code> and <code>bsxfun</code> for broadcasting.
Recent versions of Matlab supports classes and GAUSS has structs,
but neither language is truly object oriented,
and both often copy array data when it is unnecessary (instead of referencing it).
If you are going to write a lot of your own code,
true object orientation can be critical.
You can get this very nicely with the <a href="#numpy">NumPy Python library</a>.
</p>

<p>
If you are forced to work in Matlab you can still have access to Python via
<a href="http://github.com/kw/pymex">pymex</a>,
which "embeds a Python interpreter into Matlab".
</p>

<h4 id="GAUSS">GAUSS and Related Resources</h4>

<p>
See <a href="#gauss-hints">GAUSS user hints.</a>
</p>

Among matrix-oriented programming languages,
<p><a href="http://www.aptech.com/">GAUSS</a> probably remains the first choice among U.S. econometricians.
It is known for speed and ease of use.
Its collection of built-in statistical procedures is not as extensive as specialty languages such as S-Plus/Gnu-S,
but this can be offset by its speed and by available free and commercial packages
(such as <a href="http://www.econotron.com/gaussx/gaussx1.html">GAUSSX</a>).
</p>

<p>
The  <a href="http://www.american.edu/academic.depts/cas/econ/gaussres/GAUSSIDX.HTM">
<b>GAUSS Source Code Archive</b></a> at American University is a primary source of GAUSS freeware.
Included in the archive is a partial
<a href="http://www.american.edu/academic.depts/cas/econ/gaussres/GAUSSIDX.HTM#OTHER">list of
other archived code</a>.
You may also find it useful to visit the
<a href="http://www.rhkoning.com/gauss/">
archive for the gaussians mailing list</a>.
</p>


<h5 id="gaussstart">Getting Started with GAUSS</h5>

<ul>
  <li>
  You can try my <a href="http://www.american.edu/econ/notes/gauss.htm">GAUSS Basics</a>.
  </li>
  <li>Kuan-Pin Lin and Lani Pennington offer <a href="http://eclab.econ.pdx.edu/gpe/toc.htm">an innovative and useful online GAUSS tutorial</a>, which includes applications of their LSQ package.
  </li>
  <li>
  Felix Ritchie's guide <a href="http://www.trigconsulting.co.uk/gauss/manual.html">"Programming in Gauss"</a> (available in .pdf format) is a useful guide to GAUSS programming basics and to improving the efficiency of your GAUSS programs.
  </li>
  <li><a href="http://www.wws.princeton.edu/~mwatson/ec518/gauss_tutorial.html">Mark Watson's GAUSS tutorial</a>.
  </li>
  <li><a href="http://www.arec.umd.edu/gauss/gauss.htm">Mark Nerlove's GAUSS tutorial</a>, which includes examples with data sets.
  </li>
  <li><a href="http://statlab.stat.yale.edu/statlab/software/GAUSS.html">Yale StatLab's Gauss page</a>.
  </li>
  <li>Eric Zivot has compiled a useful <a href="http://faculty.washington.edu/ezivot/gaussfaq.htm">GAUSS FAQ</a>.
  </li>
  <li>There is also some <a href="http://gurukul.ucc.american.edu/acs/social/documents/gauss/gauss.htm"> documentation on campus</a>.
  </li>
  <li>
  <a href="http://rhkoning.xs4all.nl/">A Short Introduction to GAUSS for Windows</a> by Ruud Koning is not so short and only chapter 2 is currently free, but it might be useful.
  </li>
</ul>



<h3 id="other-mpl-com">Other Commercial Matrix Programming Languages</h3>

<p>
Jens Peter Steffen offers a detailed
<a href="http://www.ku-eichstaett.de/docs/WWF/STA/download.htm">comparison of GAUSS with MatLab and Ox</a>.
</p>

<ul>
<li><a href="http://www.aptech.com">GAUSS</a> is a matrix programming language favored by econometricians.
<p class="boxed">
Available in Hurst Lab and Kogod/Econ Lab.)
</p>
</li>
<li>
<a href="http://www.wavemetrics.com/">IGOR Pro</a>
is a remarkable scientific programming environment with good extensibility.
</li>
<li><a href="http://www.mathworks.com/">Matlab</a> is a matrix programming language favored by engineers but in fairly wide use among economists.
<p class="boxed">
(Available on the AU campus as a network application.)
</p>
There is <a href="http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml">online documentation</a>.
Check out the <a href="http://www.mathworks.com/contsoft.shtml">MathWorks</a> software library for MatLab.
You may also want to visit the <a href="news:comp.soft-sys.matlab">Matlab Users Group</a>.
<a href="http://www.mathtools.com">MathTools Ltd</a> offers free Matlab toolboxes, Matlab resources and links,
MIDEVA (fast Matlab replacement),
and the MATCOM compiler for Matlab.
If you want Matlab's numerics but need to work in a real programming language,
you can control a Matlab session from Python with <a href="http://mlabwrap.sourceforge.net/">mlabwrap</a>.
</li>
<li>
Harmonic Software's <a href="http://www.omatrix.com/">O-Matrix</a> is very reasonably priced for academic users.
</li>
<li>
<a href="http://www.nuff.ox.ac.uk/Users/Doornik/">Ox Professional</a> is not free 
(but there is a console version that is free for educational users).
</li>
<li><a href="http://www.jsoftware.com/">J</a>. Be sure to start with the <a href="http://www.jsoftware.com/resource/pdfdoc.htm">Primer</a>.
</li>
<li>
<a href="http://www.rsinc.com/">Interactive Data Language (IDL)</a> is popular among astronomers and others doing intensive image processing.
You can run most IDL programs using the <a href="http://gnudatalanguage.sourceforge.net/">GNU Data Language (GDL)</a>.
You can convert your IDL programs to Python with <a href="http://software.pseudogreen.org/i2py/">i2py</a>.
</li>
</ul>

<h2 id="gplang">General Purpose Programming Languages</h2>

<p>
This is a very short selection of possibly useful free programming languages.
</p>

<p>
If your emphasis is computational, you will want to visit
<a href="http://gams.nist.gov/serve.cgi/Packages">NIST's Guide to Available Mathematical Software</a> 
and 
the <a href="http://www.netlib.org/master/expanded_liblist.html">Netlib repository</a>.
Also, see Jack and Hatem's <a href="http://www.netlib.org/utk/people/JackDongarra/la-sw.html">list of free linear algebra software</a>.
</p>

<h3>Python</h3>

<p id="python">
I use <a href="http://www.python.org">Python</a> whenever possible,
which is almost always.
(The main exception is when execution speed is at an absolute premium in computationally intensive projects.)
Traditionally thought of as a scripting language,
Python has evolved into an extremely powerful very high level general purpose programming language.
It is still useful (indeed, a first choice) for scripting.
Use it to find out why.
In addition, Python has <a href="#scipy">excellent support</a> for scientific computing.
The <a href="http://docs.python.org/">online documentation</a> is excellent.
If you lack programming experience,
try <a href="http://www-uxsup.csx.cam.ac.uk/courses/PythonAB/">Python for the Absolute Beginner</a>
and <a href="http://swaroopch.info/text/Byte_of_Python:Main_Page">Byte of Python</a>
before trying the Python tutorial.
</p>

<p>
One other note:
although it is an interpreted language,
you can <a href="http://effbot.org/zone/python-compile.htm">compile Python</a>.
Interesting <a href="#psmeta">graphics</a> and <a href="#matrixlanguages">numerical</a> libraries have been developed for Python.
</p>

<h4>L3</h4>

<p>
<a href="http://l3lang.sourceforge.net/">L3</a> is a large subset of Python
along with a GUI interface that provides a "worksheet" like environment. (License: BSD.)
Easy and powerful.
</p>


<h3>Build Systems</h3>

<ul>
<li id="scons">
A fairly popular alternative to <a href="http://www.gnu.org/software/make/">make</a> is
<a href="http://www.scons.org/">scons</a>. (License: MIT; Language: Python.)
</li>
<li>
A newer and very promising alternative is <a href="http://waf.googlecode.com/svn/docs/wafbook/single.html#_introduction">Waf</a>.
</li>
</ul>

<h3>C</h3>

<div id="clang">
For C/C++ see <a href="http://www.research.att.com/~bs/compilers.html">Bjarne Stroustrup's list</a>.
However, I will list a few free C and C++ compilers that are reputed to be quite good.
If you are new to C, see <a href="http://www-ccs.ucsd.edu/c/">Standard C</a> by Plauger and Brodie.
<br />
Btw, if you program in C/C++, you should probably be using the 
<a href="http://cscope.sourceforge.net/">Cscope</a> code browser;
there is a native <a href="http://iamphet.nm.ru/cscope/index.html">Win32 port of Cscope</a>,
which works with Vim's Cscope interface.
<ul>
<li>
There is a <a href="http://www.cygnus.com/misc/gnu-win32/">Windows port</a> of the GNU gcc compiler.
(I assume you can use the GNU debugger via <a href="http://clewn.sourceforge.net/">Clewn</a> with Vim under Windows,
but I haven't tried.)
<a href="http://www.mingw.org/">MinGW</a> is another, possibly better choice.
To get started with MinGW read <a href="http://www.spacejack.org/games/mingw/">Linkovitch's MinGW Starter Guide</a> and some <a href="http://www.mingw.org/docs.shtml">basic documentation</a>.
Windows users may also want to look at <a href="http://www.delorie.com/djgpp/doc/eli-m17n99.html">DJGPP</a>.
</li>
<li>
The <a href="http://www.openwatcom.org/">Watcom compiler</a> is being released as open source.
</li>
<li>
<a href="http://www.intel.com">Intel ®</a>
offers its excellent Math Kernel Library free for noncommercial use.
</li>
<li>
<a href="http://www.digitalmars.com/">Digital Mars</a> offers a good, fast compiler.
(Formally Zortech and then Symantec's compiler.)
You need to buy the CD to get the debugger.
</li>
<li>
<a href="http://www.borland.com/bcppbuilder/freecompiler/">Borland's C++ compiler</a> is now free.
</li>
<li>
<a href="http://www.cs.virginia.edu/~lcc-win32/">LCC-Win32</a> is a free C compiler and programming environment for Windows users.
</li>
<li>
SoftIntegration has made its <a href="http://www.softintegration.com/">Ch Shell/Interpreter</a> available free for academic users: you can run C/C++ code in an interpreter and get many Unix utilities in addition.
</li>
</ul>
There is <a href="http://www.ulib.org/webRoot/Books/Numerical_Recipes/">online access to <em>Numerical Recipes in C</em></a>,
but I have had occasional trouble getting through.
</div>



<h3>Other Free Languages</h3>

<h4 id="script">Scripting Languages</h4> 

<p>
For scripting,
the most popular choices currently seem to be <a href="#python">Python</a>,
<a href="http://www.perl.org/">Perl</a>,
and <a href="http://www.ruby-lang.org/en/">Ruby</a>.
There have also been some interesting applications of the embeddable <a href="http://www.s-lang.org/">S-Lang</a> interpreter and programmers library.
<a href="http://www.lua.org/">Lua</a> is especially small and portable,
and is used in the up and coming <a href="http://www.luatex.org/">LuaTeX</a> extension of pdfTeX.
(See my <a href="#luatex_hints">LuaTeX hints</a>.)
<br />
It is also worth mention that <a href="http://www.jython.org/">Jython</a> implements Python as Java,
allowing the ease of Python scripting to be combined with the power of Java.
(As a very cool plus,
<a href="#vim">Vim</a> supports scripting with Perl, Python, and Ruby.)
</p>
<p>More Scripting:
<br />
<a href="http://aspn.activestate.com/ASPN/Downloads/ActivePerl/index/">Active Perl</a> is available for many platforms and is getting excellent reviews.
<a href="http://www.python.org/">Python</a> is growing in popularity,
as is <a href="http://www.ruby-lang.org/en/index.html">Ruby</a>
(which finally has a <a href="http://www.pragmaticprogrammer.com/ruby/downloads/ruby-install.html">Windows installer</a>).
</p>


<h4>Languages for Scientific Computing</h4>

<p>
We have alread discussed C above.
Certainly C++ and Fortran have to be mentioned.
The <a href="http://gcc.gnu.org/">GNU Compiler Collection (GCC)</a>
includes front ends and libraries for these
(as well as Objective-C, Java, and Ada).
</p>

<p>
Getting started with Java:
<br />
Download the <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Development Kit (JDK)</a>,
which includes the Java Runtime Environment (JRE).
On Windows, you install this by running the downloaded executable.
Then download <a href="http://www.eclipse.org/">Eclipse</a>,
which is an IDE that is popular for Java development.
You “install” Eclipse simply by decompressing it.
(E.g., on Windows, just unzip it.
It does not make any registry changes.)
Eclipse comes with tutorials.
For a simple overview of installation,
consider this <a href="http://www.youtube.com/watch?v=vbKiFIzQukc">online video</a>.
</p>

<p>
For very simple introductions to Java (suitable for those without programming skills),
try
<a href="http://math.hws.edu/javanotes/">David Eck’s free book</a>
and/or
<a href="http://myflex.org/books/java4kids/java4kids.htm">Java Programming for Kids, Parents, and Grandparents</a>.
</p>

<p>The <a href="http://www.fortran.com/F/">F
programming language</a> is a carefully selected
subset of the most useful Fortran 95.
You can compile F with the g95 compiler:
<code>g95 -std=F my_program.f95</code>,
available for free from <a href="http://www.g95.org/">G95</a>.
</p>

<p>
<a href="http://www.freepascal.org/">FreePascal</a> includes very substantial Delphi compatibility.
(License: LGPL and GPL)
</p>

<p>
<a href="http://www.gnu.org/software/gnat/gnat.html">Ada</a>,
which is a preferred languge for the security conscious.
</p>

<p>
<a href="http://www.eiffel.com/">Eiffel</a> supports desing by contract.
There is now open source licensing of Eiffel Studio.
(License: GPL)
</p>

<p>
<a href="http://www.swiss.ai.mit.edu/projects/scheme/">Scheme</a>.
<br />
<a href="http://www.plt-scheme.org/software/mzscheme/">MzScheme</a> is a free and open source implementation for Linux, Mac, and Windows.
(As a very cool plus,
as of version 7 <a href="#vim">Vim</a> supports MzScheme scripting.)
</p>




<p>
<a href="http://www.scheme.com/">Scheme</a>, and R. Kent Dybvig's <a href="http://www.scheme.com/tspl2d/index.html">
The Scheme Programming Language, Second Edition</a> is now online.
</p>

<p>
<a href="http://www.info.uni-karlsruhe.de/~sather/index_engl.html">Sather-K</a> is Eiffel based but adds innovations (and is free).
</p>

<p><a href="http://www.object-tools.com/">Visual Eiffel Lite</a> is free.
Documentation is in
<a href="http://www.doc.mmu.ac.uk/library/notes/ajt/">Eiffel: Object Oriented Programming</a>
</p>


<h4>Other Useful Languages</h4>

<h5>PostScript</h5>

<p>
<a href="http://www.cs.wisc.edu/~ghost/">GhostScript and GhostView</a> let you view and print PostScript files.
<br />
Related: <a href="http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/io/plisp/0.html">PLisp</a> takes the basic structure of Common Lisp and uses it as an alternative representation of a PostScript program.
While the basic graphic operators of PostScript are retained, Lisp-like function definition, control flow,
and variable binding become available.
Macros, defined constants, and function libraries have also been provided.
The PLisp compiler generates PostScript code which is guaranteed not to contain errors in stack usage.
</p>

<p>
In an interesting twist, you can now use PostScript as a drawing language in web pages
using <a href="http://logand.com/sw/wps/index.html">WPS</a>,
"a PostScript and PDF interpreter for HTML 5 canvas".
</p>

<p>
PostScript programmers may find <a href="http://www.anastigmatix.net/postscript/Order.html">sorting and order statistics</a> to be a useful resource.
</p>


<h2 id="STAT">Other Useful Statistical Software</h2>

<p>
See the free stat software pages by <a href="http://statpages.org/javasta2.html">John C. Pezzullo</a> and <a href="http://gsociology.icaap.org/methods/soft.html">Gene Shackman </a>.
(The latter offers some package comparisons.)
Also see the <a href="http://dge.repec.org/software.html">QM&amp;RBC Software</a> page.
</p>

<ul>
<li>
OK, OK, <a href="http://econweb.tamu.edu/gambit/">Gambit</a> is not statistical software,
but I've got to put this fine, scriptable collection of game-theory tools <em>somewhere</em>!
</li>
<li>
<a href="http://www.jmulti.de/">JMulTi</a>
"is an interactive software designed for univariate and multivariate time series analysis. It has a Java graphical user interface that uses an external engine for statistical computations."
(License: GPL)
(The only external engine support I know of is GAUSS,
but presumably this could be adapted to e.g. NumPy.)
</li>
<li id="Rproject">
R is a free and open source clone of S-PLUS.
(It is also called <a href="http://www.r-project.org/">'GNU S'</a>.)
The original S developers contribute to R,
and it is said that much of S+ has been ported at this point.
The site includes manuals,
an archive of contributed code,
links to R mailing lists,
and the R mailing list archives.
Mac users should be sure to visit the <a href="http://r.research.att.com/">R for Mac OS X Developers page</a>,
where they will also find a useful <a href="#gfortran">gfortran</a>.
You can call R from other languages, including Python.
Do not overlook <a href="http://sourceforge.net/projects/tinn-r">Tinn-R</a>,
a nice replacement for the basic code editor provided by Rgui. (License: GPL)
(See the <a href="#rproject_hints">R hints</a>.)
</li>
<li id="gretl">
<a href="http://gretl.sourceforge.net/">gretl</a> is the Gnu Regression, Econometrics and Time-series Library,
a free, open source regression package.
This is a very user friendly yet powerful package suitable for a large range of time-series econometrics.
Note that gretl uses <a href="#gnuplot">gnuplot</a> for its graphics and provides substantial script access to it,
so that graphics are fast and powerful.
See the 
</li>
<li>
<a href="http://forrest.psych.unc.edu/research/">ViSta</a> is freeware visual statistics program.
</li>
<li>
<a href="http://www.stat.sc.edu/~west/webstat/">WebStat</a> is a Java-based statistical computing program
</li>
<li>
There is now a freeware clone of SPSS called <a href="http://www.gnu.org/software/pspp/">PSPP</a> (formerly Fiasco).
It interprets commands in the SPSS language and produces tabular output in ASCII, HTML, or PostScript format.
PSPP already supports a large subset of SPSS's transformation language.
Its statistical procedure support is limited but growing.
</li>
<li>
<a href="http://www.statistical.org/">Spatial Statistical Resources</a>, and many others.
</li>
<li>
<a href="http://www.statsci.org/statcomp.html">Statistical Computing Resources</a> on Statitistical Science Web.
</li>
<li>Look at Rainer_Wuerlaender's page of
<a href="http://ourworld.compuserve.com/homepages/Rainer_Wuerlaender/statsoft.htm">
statistical shareware and freeware</a>.
</li>
<li>
Erasmus University, Rotterdam's <a href="http://econometriclinks.com"> Econometric Links</a>.
</li>
<li>
Check out the Econometrics Laboratory Software Archive  
<a href="http://elsa.berkeley.edu/">ELSE</a>  at Berkeley.
</li>
<li>
Another useful resource is the
<a href="http://www.uni-frankfurt.de/~stst/scproge.html"> scientific software list</a>
on the <a href="http://www.scientificweb.com">Scientific Web</a>
</li>
<li id="eviews">
<a href="http://www.eviews.com/">EViews</a>
is an extremely simple-to-use Windows-based econometric package whose strength lies in time-series analysis.
It is used in many AU economics courses.
You can download
<a href="http://www.eviews.com/eviews3/eviews31/ev31hlp-04.zip
">the help file</a> even if you do not own the software.
There is a <a href="http://forums.eviews.com/">user forum</a>.
<div class="boxed">See <a href="#eviews-hints">EViews user hints</a>.
</div>
</li>
<li>
<a href="http://www.netaxis.qc.ca/people/j.breslaw/gaussx/gaussx1.html">GAUSSX</a>,
<a href="http://www.estima.com/index.html">RATS</a>,
<a href="http://www.sas.com/">SAS</a> (not user friendly but powerful),
<a href="http://www.stata.com/">STATA</a> (good for cross section analysis),
<a href="http://shazam.econ.ubc.ca/">Shazam</a>,
<a href="http://www.spss.com/">SPSS</a> (limited but popular),
and <a href="http://www.tspintl.com/">TSP</a> are popular
commercial econometric packages, available for the PC.
<div class="boxed">
AU Students:
<br />
AU offers SAS, TSP, <!-- ? -->
SPSS, and EViews as network applications,
and there may still be a site license for STATA.
TSP offers useful
<a href="http://www.crl.com/~tspintl/tspexam.htm">sample TSP programs</a>.
</div>
</li>
<li> There are also users groups for <a href="news:comp.soft-sys.sas">SAS</a> and
<a href="news:comp.soft-sys.spss">SPSS</a>.
</li>
<li>
Here is a different approach for Mathematica users:
<a href="http://www.mathstatica.com/software/">mathStatica</a> is a high precision math/stat package that uses Mathematica as its computational engine.
</li>
<li>
<a href="www.insightful.com/splus">S-PLUS</a>
is popular among statisticians
because of its extensive library of statistical functions,
but it is reported to be very slow compared to GAUSS.
S-PLUS is available in Anderson Lab.
</li>
<li>
The <a href="http://econwpa.wustl.edu/limdep/limdep.html">Manual for
the<b> LIMDEP</b> Computer Program</a> is available online.
</li>
<li> Be sure to visit Carnegie-Mellon's
<a href="http://lib.stat.cmu.edu/">Stat Lib Server</a>
<a href="http://lib.stat.cmu.edu/general/.index.html">Stat Lab</a>
The <a href="http://lib.stat.cmu.edu/apstat/">Applied Statistics algorithms</a>
may be of special interest.
</li>
<li>
<a href="http://netec.mcc.ac.uk/CodEc.html">CodEc</a> archives econometric code for economists.
</li>
<li> <a href="gopher://wuecon.wustl.edu:671/11/uicstat">UICSTAT</a>
</li>
<li> <a href="http://www.bank-banque-canada.ca/pgilbert">Time Series Protocol for Application Database Interface</a>
</li>
<li> <a href="http://emlab.berkeley.edu/eml/">
U.C. Berkeley's Econometric Laboratory</a> offers a variety of
<a href="http://emlab.berkeley.edu/programs2.html">Source Code Links</a>
</li>
<li>Mike Fuller's
<a href="http://www.mailbase.ac.uk/lists/minitab/files/list-of-lists">
list of stat related related e-lists</a>.
</li>
<li><a href="http://www.minitab.com/">Minitab, Inc. (Minitab)</a>
</li>
<li><a href=
"http://www.stat.umn.edu/ARCHIVES/archives.html">XLISP-STAT</a>
</li>
<li>
Python users may want to look at <a href="http://econpy.googlecode.com/svn/trunk/pytrix/pytrix.xhtml">pyTrix</a>,
an archive of econometrics related Python code.
It is part of the <a href="http://code.google.com/p/econpy/">EconPy</a> project.
</li>
</ul>

<h3 id="optimize">Optimization</h3>
<p>
Resources in this area are extensive.
I will only mention a few idiosyncratically selected items.
(For linear and non-linear programming, see also the separate list of <a href="#solvers">solvers</a>.)
Do not forget to think about scaling issues.
(Here is one discussion of scaling:
go to <a href="http://www.aptech.com/">the Aptech web site</a>,
click on Resource Library,
then click on White Papers,
and download <a href="http://www.aptech.com/papers/qnewton.pdf">Optimization with the Quasi-Newton Method</a>.)
</p>

<ul>
<li>
Most matrix languages include one or more optimization modules or libraries.
</li>
<li>
<a href="http://econpy.googlecode.com/svn/trunk/pytrix/pytrix.xhtml#optimize">Python optimization resources</a>.
</li>
<li>
Hetrick lists a variety of <a href="http://cliodhna.cop.uop.edu/~hetrick/c-sources.html">C resources</a>.
Also see the <a href="http://www.oonumerics.org/oon/">Object-Oriented Numerics page</a>.
</li>
<li>
<a href="http://wwwasdoc.web.cern.ch/wwwasdoc/minuit/minmain.html">Minuit</a> is a famous, powerful minimizer,
supplied as part of the GPL'd <a href="http://wwwasd.web.cern.ch/wwwasd/cernlib/">CERNlib</a>.
It is Fortran based,
but <a href="http://c-minuit.sourceforge.net/">C-Minuit</a> allows the use of C functions.
</li>
<li>
<a href="http://www-unix.mcs.anl.gov/petsc/petsc-as/documentation/copyright.html">PETSc</a>
offers an extensive library under a liberal license (although a few bits are GPL).
</li>
<li>
<a href="http://users.powernet.co.uk/kienzle/octave/optim.html">Octave Links</a>.
</li>
<li>
The <a href="http://cars9.uchicago.edu/software/python/index.html">GSECARS library</a> includes some pure Python optimization code, including mpfit.
</li>
<li>
Malcolm Sambridge's <a href="http://wwwrses.anu.edu.au/~malcolm/na/na.html">neighbourhood algorithm code</a>
implements a two-stage numerical procedure for non-linear geophysical inverse problems that has applications as a direct search technique for global optimization.
</li>
<li>
Visit the  <a href="http://www.netlib.org/">Netlib Repository</a>
for the <a href="http://www.netlib.org/opt/"> Optimization</a> 
code and the <a href="http://www.netlib.org/toms/index.html">ACM Collected Algorithms</a>.  
</li>
<li>
<a href="http://www.coin-or.org/">COIN-OR</a> offers a variety of open source optimization applications.
</li>
<li>
<a href="http://http://www.quandt.com/handbook/frames1.htm">GQOPT</a> is a powerful Fortran optimization package with many built in statistical functions.
</li>
<li>
The <a href="http://www.nag.com/">Numerical Algorithms Group</a> offers a variety of potentially useful products.
</li>
<li>
<a href="http://www.gams.com/">GAMS</a> offers access to an extensive set of heavily tested <a href="#solvers">solvers</a>.
</li>
<li>
<a href="http://www.comet-online.org/">Comet</a>
is an object oriented programming language for constraint-based local search.
</li>
<li>
<a href="http://www.geuz.org/getdp/">GetDP</a>
"is a general finite element solver using mixed elements to discretize de Rham-type complexes in one, two and three dimensions."
</li>
<li>
<a href="http://www.norg.uminho.pt/aivaz/pswarm/">PSwarm</a> looks very useful for global optimization. (License: LGPL)
(Someone add Python bindings please!)
</li>
</ul>


<h4>Python Specific</h4>
<ul>
<li>
<a href="http://www.scipy.org/">SciPy</a> includes the scipy.optimize module.
(Along with many other unidimensional and multi-dimensional optimization functions,
this module includes fmin_l_bfgs_b for constrained optimization,
which takes an optional bounds argument that is a list of min/max values for each parameter.)
Since the code is free and open source,
you can adapt these to the language of your choice.  
</li>
<li>
Dahl and Vandenberghe's <a href="http://cvxopt.org/">CVXOPT (convex optimization)</a> code,
which includes Python classes for storing and manipulating dense and sparse matrices.
</li>
</ul>


<h3>Visualizing Data</h3>

<p>
Visual analysis of data remains very useful,
and some innovations in this area are recent.
Classic texts include:
<em>The Visual Display of Quantitative Information</em> by <a href="http://www.edwardtufte.com/tufte/">Edward Tufte</a> 
and
<em>Visualizing Data</em> by <a href="http://www.stat.purdue.edu/~wsc/">William S. Cleveland</a>.
You can get the <a href="http://www.stat.purdue.edu/~wsc/visualizing.html">data and S scripts for Cleveland's book</a>.
Cleveland (with Becker and Shyu) developed <a href="http://netlib.bell-labs.com/cm/ms/departments/sia/project/trellis/">Trellis Graphics</a>&trade; for data visualization,
which has been implemented for a number of platforms including S-Plus and R.
(The name &ldquo;Trellis&rdquo; is trade-marked, so these are often referred to as lattice plots.)
<br />
Other resources:
<a href="http://www.galaxy.gmu.edu/~dcarr/">Daniel Carr's page</a>.
</p>

<p>
<a href="http://rosuda.org/Mondrian/">Modrian</a>
"is a statistical data-visualization system written in JAVA."
Good for categorical data and for maps.
Plots are interactive.
</p>



<h2 id="CAS">Symbolic Mathematics/Computer Algebra Systems</h2>

<p>
You will find a more complete list plus discussions at <a href="http://www.symbolicnet.org/">SymbolicNet</a> 
and at the <a href="http://math.haifa.ac.il/msoftware.html">University of Haifa Math Department</a>.
<a href="http://sal.kachinatech.com">SAL (Scientific Applications on Linux)</a> offers a useful review of <a href="http://sal.kachinatech.com/A/1/index.shtml">Computer Algebra Systems</a>.
Below I list only a few interesting packages, with an emphasis on multi-platform general-purpose packages.
</p>

<ul>
<li>
<a href="http://www.sagemath.org/">Sage</a>
is an interesting, Python-based CAS with excellent documentation
(including a simple <a href="http://www.sagemath.org/help.html#tutorial">tutorial</a>.
(License: GPL)
</li>
<li id="Maxima">
<a href="http://maxima.sourceforge.net/">Maxima</a> (Lisp, GPL) is is a free cross-platform solution.
(A windows binary is available.)
There is a notebook interface:
<a href="http://wxmaxima.sourceforge.net/wiki/index.php/Main_Page">wxMaxima</a> (License: GPL2)
"is a cross platform GUI for the computer algebra system Maxima based on wxWidgets",
which is distributed with Maxima.
(Applications for economists, with a supporting text,
can be found at <a href="http://www.wxmaximaecon.com/">http://www.wxmaximaecon.com/</a>.)
This can be used to produce beautiful PDF documents via LaTeX;
see <a href="http://facultyweb.berry.edu/wmixon/maxima/Typesetting/Intro.html">Typesetting in wxMaxima</a> for details.
Another possibile front end is <a href="http://home.arcor.de/mulk/projects/mascyma/index.xhtml.en">Mascyma</a> (language: Python).
</li>
<li>
Great things grow from small beginnings:
is <a href="http://code.google.com/p/sympy/">sympy</a> destined for greatness?
This CAS in Python may be small, but it is <em>very</em> easily extensible.
<a href="http://code.google.com/p/sympycore/">SympyCore</a> released version 0.1 in Feb. 2008.
(License: new BSD; Language: Python)
</li>
<li><a href="http://page.axiom-developer.org">Axiom</a> (formerly ScratchPad) is now free and open source!
"Axiom ... defines a strongly typed, mathematically correct type hierarchy.
It has a programming language and a built-in compiler."
</li>
<li>
<a href="http://www.xs4all.nl/~apinkus/yacas.html">YACAS</a> 
</li>
<li>
<a href="http://www.ginac.de/">GiNaC</a> offers an interesting and extensible option for those willing to deal with C++.
</li>
<li>
<a href="http://www.singular.uni-kl.de/">Singular</a> is "a Computer Algebra System for polynomial computations with special emphasis on the needs of commutative algebra, algebraic geometry, and singularity theory."
It is GPL software.
(A windows binary is available.
This requires the Cygwin binary, but it also installs it.)
Also see <a href="http://servus.math.su.se/bergman/">Bergman</a>,
"a system for computations in commutative and purely non-commutative graded algebra."
</li>
<li>
<a href="http://www.sciface.com/products/index.shtml">MuPad</a> is professional and cross-platform.
There is a "freeware" version for academic and individual non-commercial use.
</li>
<li>
Mathematica remains the most popular symbolic math program.
I find it excellent for both teaching and research.
(See my <a href="#mma-hints">Mathematica hints</a>.)
Apparently some researchers use it directly for document production;
I have not been able to use it this way.
<br />
Check out the <a href="http://www.wolfram.com/mathsource/">MathSource</a> code for Mathematica.
Python users can readily interact with Mathematica using <a href="http://library.wolfram.com/infocenter/MathSource/6622/">Pythonika</a>
and <a href="http://library.wolfram.com/infocenter/MathSource/585/">PYML</a>.
For support,
see the <a href="news:comp.soft-sys.math.mathematica">Mathematica Users Group</a>
or look into the <a href="http://smc.vnet.net/MathGroup.html">MathGroup email
list</a>.
Finally, <a href="http://www.dataweb.nl/~cool/TheEconomicsPack/index.html">Thomas Cool's page</a> offers a collection of economics programs written in Mathematica.
        <div class="boxed">
        Mathematica for Students is available for full-time students at a big discount.
        On the AU campus,
        Mathematica is available in Anderson Lab and Clark Lab.
        </div>
<br />
Interesting Mathematica books for economists:
<br />
<a href="http://www.amazon.com/gp/product/0387945180?ie=UTF8&tag=sofforecotm-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0387945180">Computational Economics and Finance: Modeling and Analysis with Mathematica by Hal Varian</a>,
<a href="http://www.amazon.com/gp/product/0817641971?ie=UTF8&tag=sofforecotm-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0817641971">Computational Financial Mathematics using Mathematica by Srdjan Stojanovic</a>
<br />
Introductory Mathematica books:
<br /> 
<a href="http://amzn.to/1ej2oq0">Torrence, Bruce F. (2009),
The Student's Introduction to MATHEMATICA: A Handbook for Precalculus, Calculus, and Linear Algebra</a>
(A useful and example oriented introduction.)
<br /> 
<a href="http://www.amazon.com/gp/product/0521846781?ie=UTF8&tag=sofforecotm-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0521846781">An Introduction to Programming with Mathematica by Paul Wellin</a> 
</li>
<li> <a href="http://www.maplesoft.com/">Maple</a> is also very popular.
(Note that you can select Maple as the math kernel when you buy Scientific Notebook.)
<br />
Introductions to Maple:
<a href="http://www.amazon.com/gp/product/0470455543?ie=UTF8&tag=sofforecotm-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0470455543">Getting Started with Maple by Chi Keung Cheung</a>,
<a href="http://www.amazon.com/gp/product/0387002308?ie=UTF8&tag=sofforecotm-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0387002308">Introduction to Maple by Andre Heck</a>.  
</li>
<li>
<a href="http://education.ti.com/product/software/derive/features/features.html">Derive</a> is inexpensive and powerful.
</li>
<li>
<a href="http://www.clic.net/Elan/">Solutions</a> (a freeware computer algebra system)
</li>
<li>
<a href="http://swiginac.berlios.de/">Swiginac</a> is a Python interface to <a href="http://www.ginac.de/">GiNaC</a>.
</li>
<li>
<a href="http://www.tildesoft.com/Pythonica.html">Pythonica</a> holds promise.
</li>
</ul>

<p>
Commercial packages include the best known,
<a href="http://www.wolfram.com/">Mathematica</a> and <a href="http://www.maplesoft.com/">Maple</a>,
and some excellent but less well know packages
such as <a href="http://www.livemath.com/">LiveMath</a>.
</p>

<p>
<a href="http://www.gap-system.org/">Groups, Algorithms, Programming (GAP)</a>
"is a system for computational discrete algebra, with particular emphasis on Computational Group Theory."
(License: GPL2)
</p>


<h2 id="WWW">
Web Resources
</h2>

<ul class="menu">
<li>
<a href="#webmath">Math on the Web</a>
</li>
<li>
<a href="#browsers">Browsers</a>
</li>
<li>
<a href="#email">Email</a>
</li>
<li>
<a href="#AV">Anti-Virus</a>
</li>
<li>
<a href="#html">HTML</a>
</li>
<li>
<a href="#multimedia">Multimedia Resources</a>
</li>
</ul>


<h3 id="webmath">Math on the Web</h3>

<p>
There are a number of way to provide access to nicely formatted math on the Web.
The most widely used is to provide PDF documents that contain nicely formatted math.
The best way to produce good looking math in PDF documents is with <a href="#TEX">TeX</a> based software.
Acceptable results can sometimes be achieved by distilling a word processor document with equation editor objects embedded in it.
</p>

<p>
The other major alternative is to produce MathML,
which is finally starting to get decent browser support (especially in FireFox).
(Be sure to download the <a href="#STIX">STIX fonts</a>.)
Producing MathML by hand is impractical,
so there has been a search for feasible ways to rely on MathML.
One of the most interesting approaches is to use <a href="#rest">reStructuredText</a>
with the <a href="http://docutils.sourceforge.net/sandbox/jensj/latex_math/tools/">rst2mathml</a> writer.
This is probably the simplest powerful way to put math on the web.
<br />
Another interesting approache is <a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html">ASCIIMathML</a>,
which simply includes LaTeX-like math in a normal HTML file.
(A clever javascript produces the MathML.)
Mozilla based <a href="#browsers">browsers</a> such as FireFox have excellent native MathML support,
so they work well with ASCIIMathML.
(But you need to <a href="http://web.mit.edu/ist/topics/webpublishing/mathml/fonts-win.html">install the math fonts</a>.
See the <a href="http://en.wikipedia.org/wiki/MathML">Wikipedia MathML article</a>
for a summary of support by other browsers.
</p>


<p>
The remaining alternative is to convert LaTeX documents directly to XHTML+MathML documents.
This can be done with <a href="http://www.cse.ohio-state.edu/~gurari/TeX4ht/mn.html">TeX4ht</a>
or with the closely related <a href="http://pear.math.pitt.edu/mathzilla/tex4moz.html">TeX4moz</a>.
<a href="http://hutchinson.belmont.ma.us/tth/mml/">TtM</a> looks like a similar effort.
</p>



<h3 id="browsers">Browsers</h3>

<p>
If you want to test your browser for standards compliance,
start with the <a href="http://acid3.acidtests.org/">Acid 3 tests</a>.
You might also want to look at handling of
<a href="http://www.w3.org/Math/testsuite/">MathMl</a>,
<a href="http://www.w3.org/Graphics/SVG/WG/wiki/Test_Suite_Overview">SVG graphics</a>,
or even a very simple <a href="http://tantek.com/XHTML/Test/minimal.html">XHTML</a>.
(Be sure to look at the tests where the document is <a href="http://tantek.com/XHTML/Test/xhtmlwithprolog.xml">served as XML</a>.)
</p>

<p>
I like three browsers:
<a href="http://www.mozilla.com/en-US/firefox">FireFox</a>,
<a href="http://www.opera.com/">Opera</a>,
and <a href="https://www.google.com/intl/en/chrome/browser/">Chrome</a>.
Of these, I give FireFox the nod for being both open source and mature,
but Chrome is also open source.
Internet Explorer is slowly becoming usable (except for MathML),
and version 9 has finally achieved a somewhat qualified pass
on the <a href="http://en.wikipedia.org/wiki/Acid3#Desktop_browsers">Acid 3 tests</a>.
But I still recommend avoiding IE unless required by your workplace,
due to its lagging standards compliance and closed source code.
An interesting "new kid on the block" is <a href="http://uzbl.org/">uzbl</a>,
which emphasizes speedy browsing but is highly extensible.
</p>

<p>
See the <a href="#opera-hints">Opera hints</a> below.
See the <a href="#firefoxhints">FireFox hints</a> below.
</p>



<h3 id="email">Email</h3>

<p class="boxed">
Request:
<br />
Please follow basic email etiquette [<a href="http://learn.to//edit_messages">1</a>|<a href="http://www.dtcc.edu/cs/rfc1855.html">2</a>],
especially by <a href="http://www.american.edu/econ/notes/htmlmail.htm">using only ASCII text</a> for your email and by quoting selectively and only as necessary to provide context for your reply.
Finally, if you must use Outlook,
do your interlocutors the courtesy of <a href="#tnef">turning off TNEF attachments</a>!
</p>


<p>
Get a decent email client.
Since there are so many good options,
choose an email client that has a multi-platform presence and,
most importantly, lets you use your own editor.
</p>


<p class="boxed">
Suggestion:
<br />
Using your own editor will repay you handsomely, saving time and frustration.
Here are examples of things any good editor will allow you to do simply.
Preprocess your email to compensate for bad practices by the sender,
delete or reformat blocks of text (e.g., a line, a sentence, or a paragraph) without reaching for a mouse,
adjust capitalization (e.g., change caps to lower case or vice versa, or convert to first letter caps),
and quickly insert text from any other file (i.e., read it in, so you do not need to cut and paste).
One could propose that every application in which you need to edit text should include such facilities. 
E.g., there are many email clients with built in editors that have many such facilities.
But then each time you change applications you will have to learn a new editing environment.
Instead, whenver possible, you should use applications that provide support for an external text editor.
By sticking with your preferred editor you do not have to learn a new editing environment and scripting language each time you switch applications.
That of course is the point of modularity.
</p>

<div>
See <a href="https://en.wikipedia.org/wiki/List_of_email_clients">Wikipedia's list of email clients</a>
for a sense of what's out there.
I like the free, cross-platform <a href="http://www.washington.edu/pine/">PINE</a>,
which is keyboard oriented, highly configurable, and has a good Windows version.
But (despite occasional instability on Windows) I generally use
<a href="http://www.mozilla.org/projects/thunderbird/">Thunderbird</a>.
Another email client that is now cross-platform is <a href="http://www.claws-mail.org/">Claws Mail</a>.
<strong>Big plus:</strong> unlike most Windows email clients,
Thunderbird,
<a href="http://www.washington.edu/alpine/">Alpine</a> (formerly pc-pine),
and Sylpheed let you use your favorite editor to edit your email.
Thunderbird supports external editors by means of a plug-in.
<p class="boxed">
See the <a href="#emhints">Thunderbird hints</a> and <a href="#emhints">Alpine hints</a> below.
</p>
Another cross platform solution is now <a href="http://www.mutt.org/">The Mutt Email Client</a>&mdash;long popular among Unix users, and <a href="http://www.geocities.com/win32mutt/win32.html">available to Windows users</a>.
(You can also get mutt along with fetchmail, and sSMTP in a <a href="http://unixmail-w32.sourceforge.net/">unix-mail package for Windows</a>,
but you'll have to install <a href="http://activestate.com/Products/ActivePerl/">Perl</a> and <a href="http://sources.redhat.com/cygwin/">Cygwin</a>.)
An email client that is not free but gets great reviews is
<a href="http://www.ritlabs.com/the_bat/">The Bat</a>,
and but it seems to not yet support external editors.
Another popular cross-platform email client is <a href="http://www.cyrusoft.com/index.html">Mulberry</a>,
and it is available on many platforms. (License: Apache 2.0)
One last note on email: if you use Vim as your editor,
you might consider using <a href="http://sourceforge.net/projects/vimail">vimail</a>,
a simple mail reader for Vim.
</div>

<p>
If you are in an environment that forces you to use Outlook,
you can at least write your email with a <a href="http://cubiclevim.sourceforge.net/">decent editor</a>.
</p>

<p>
<a href="http://getpopfile.org/">POPFile</a> sorts your email and filters spam.
It is free and cross platform.
</p>

<p class="boxed">
Basic email etiquette:
<br />
Courtesy often requires turning off HTML mail.
You especially need to turn off HTML mail
when you post to mailing lists or newsgroups.
</p>



<h3>Document Formats</h3>

<p>
What are some good document formats,
and how can one transform between them?
</p>

<p>
For writing math,
nothing beats <a href="#tex">LaTeX</a>.
However, you can use <a href="#reST">reStructuredText</a>
with writers that support math to produce both LaTeX and XHTML MathML.
</p>

<h4 id="html">HTML</h4>

<p>
Writing HTML is easy: <a href="http://www.american.edu/econ/notes/html.htm">learn the basics</a>.
Conversion to other formats is possible.
Most word processors will read HTML and automatically convert to their own format.
You can also <a href="http://www.tdb.uu.se/~jan/html2ps.html">convert HTML to PostScript</a> (if you have access to Perl).
</p>

<p>
After learning a few HTML basics,
you can learn much more from the materials at the <a href="http://www.w3c.org">World Wide Web Consortium <acronym>W3C</acronym>)</a>.
Most of the time you should be able to use <a href="http://www.w3.org/TR/xhtml-basic/">XHTML Basic</a>
and
<a href="http://www.w3.org/TR/REC-CSS1">Cascading Style Sheets (<acronym>CSS</acronym>)</a>.
Here is some <a href="http://www.w3.org/Style/CSS/">CSS Background</a>,
and the wonderful <a href="http://www.meyerweb.com/eric/books/css-progref/">chapter 1</a> 
of Cascading Style Sheets 2.0 Programmer's Reference by Eric A. Meyer.
For more information and links, go to the 
<a href="http://www.w3.org/MarkUp/#recommendations">HyperText Markup Language (HTML) Homepage</a>.
Some authors may like to see the <a href="http://woodworm.cs.uml.edu/~rprice/15445/15445.html">ISO standard</a> as well.
</p>

<p>
All modern Word Processors can export their documents as HTML:
unfortunately, they often produce pretty bad HTML.
You can get much better results with some of the HTML editors,
such as the web development suite offered free by <a href="http://www.evrsoft.com/download/">Evrsoft</a>
</p>

<ul>
<li>
The <a href="http://www.chami.com/free/html-kit/">HTML Kit</a> offers syntax coloring and automatic fix up of common markup errors and conversion to XHTML.
It is based around the W3C sample code for
<a href="http://www.w3.org/People/Raggett/tidy">HTML Tidy</a>.
</li>
<li>
There are very good tutorials at <a href="http://www.w3schools.com/">HTML Schools</a>,
including XHTML tutorials.
</li>
<li id="validate">
<b>Validate your code!</b>
Try the <a href="http://validator.w3.org/">W3C HTML Validation Service</a>.
Also, the <a href="http://www.htmlhelp.org/tools/validator/">WDG Validator</a> has fans because i. it validates your HTML pages without requiring a DTD, and it can ``spider'' an entire site (validating up to 100 pages).
You can overpaste the DTD if it isn't the one you want.
You can also check your Cascading Style Sheets using W3C's <a href="http://jigsaw.w3.org/css-validator/">CSS Validation Service</a> or HTML Help's <a href="http://htmlhelp.org/tools/csscheck/">CSS validator</a>, which will also warns of possible usability problems with your style sheets.
Just paste the CSS code or the URL of the style sheet into a field.
Finallay, there is also a highly rated commercial validator: <a href="http://www.htmlvalidator.com/">CSE HTML Validator</a>.
</li>
<li>
<a href="http://www.htmlhelp.com/">The Web Design Group </a>tutorials, references, FAQs
</li>
<li>
<a href="news:comp.infosystems.www.authoring.html">Usenet HTML discussion newsgroup </a>
</li>
<li>
Look at  <a href="http://www.w3.org/TR/REC-html40/index/elements.html">the index of html elements</a>,
and <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">the index for attributes</a>,
and <a href="http://www.w3.org/TR/REC-CSS1">the CSS1 spec</a>.
(All those pointers would have been easy to locate from <a href="http://css.nu/faq/ciwas-mFAQ.html">the FAQ</a>.)
</li>
 <li><a href="http://www.htmlhelp.com/faq/wdgfaq.htm">
The Web Design Group's Web Authoring FAQ</a>
 </li>
<li>
<a href="http://www.milonic.co.uk/menu/">Milonic's Popup DHTML navigational menus</a>
</li>
<li><a href="http://info.med.yale.edu/caim/manual/contents.html">
Yale University's WWW design guide</a>
</li>
<li><a href="http://www.Sun.COM/styleguide">
Sun's WWW design style guide</a>
</li>
</ul>

<h4 id="html">XHTML</h4>

<p>
XHTML is a wonderful HTML related markup which provides for most needs when used with CSS.
Unfortunately some browsers do not support it,
unless you serve it as HTML.
(That is the trick used in the present document.)
Some authors <a href="http://www.hixie.ch/advocacy/xhtml">discourage this practice</a>,
but it should work fine, as long as you <a href="#validate">validate</a> your documents.
</p>

<p>XHTML:
<a href="http://wdvl.com/Authoring/Languages/XML/XHTML/">Introduction to XHTML, with eXamples" helpful</a> |
<a href="http://validator.w3.org/check/referer">
XHTML validation</a>.
With XML/XHTML (handled by an XML processor) you will
be able to define your own entities in the doctype declaration. E.g., you could define
&lt;!ENTITY alpha  "&amp;#xxxx;" &gt;
(where xxxx = the numeric reference)  to get around remembering numeric references.
The <a href="http://www.w3.org/TR/MathML2/appendixa.html#parsing.module">XHTML+MathML</a> document type looks particularly useful,
and it is already used to provide math support in <a href="#rest">reStructuredText</a>.
</p>

<p>
<a href="http://www.w3.org/Math/">Mathematical Markup Language (MathML)</a> is now a wonderful reality.
FireFox and other Mozilla based browsers offer native support.
So does <a href="http://www.icesoft.no/index.html">E-Lite</a>:
ICESoft's lightweight Java web browser offers full, native MathML implementation.
Internet Explorer browsers currently support it only via plug-ins.
Public discussion on features for math in HTML contexts takes place on
www-math@w3.org. To subscribe send a message to
<a href="mailto:www-math-request@w3.org?subject=subscribe">
www-math-request@w3.org</a>
with "subscribe" as the content of the subject.
There is a <a href="http://lists.w3.org/Archives/Public/www-math/">
public archive</a>. Also, consider
<a href="http://www.geom.umn.edu/software/WebEQ/">WebEQ</a> for Web math.
</p>

<p>XML:
Perhaps the most interesting current XML development for non-programmers is
<a href="http://www.odfalliance.org/">OpenDocument Format (ODF)</a>.
The is a promising <a href="http://books.evc-cit.info/odbook/book.html">open document exchange standard</a>.
The OpenDocument Format is an open, fully-documented, royalty-free standard for document exchange.
It is supported by <a href="#officesuites">OpenOffice</a>
and the closely related <a href="#officesuites">LibreOffice</a>.
There is also a <a href="http://sourceforge.net/projects/odf-converter">plug-in converter</a> for MS Word (TM).
<br />
By the way, <a href="http://docutils.sourceforge.net/">docutils</a> can write directly to ODF:
see Dave Kuhlman's work (currently in the docutils sandbox).
</p>



<h3 id="tnef">Transport Neutral Encoding Format (TNEF)</h3>

<p>
What is that winmail.dat attachment you just got in your email?
It is a proprietary Microsoft format that bundles together multiple attachments
in a way that most email clients cannot unbundle.  How obnoxious!
So, what can you do about it?
</p>

<p>
One possibility:
ask your interlocutor for the simple courtesy of
<a href="http://support.microsoft.com/kb/290809">turning off TNEF attachments</a>!
(Instructions are the bottom of the article.)
</p>

<p>
If you are unfortunate enough to receive a TNEF attachment from someone
who cannot figure out how to configure their email client to send attachments
that everyone can read, you may have to unpack the TNEF attachment yourself.
The only cross platform solutions I know of are
<a href="http://www.freeutils.net/source/jtnef/">JTNEF</a>
and
<a href="http://code.google.com/p/pytnef/">pytnef</a> (License: LGPL).
At this point, <a href="http://cheeseshop.python.org/pypi/pytnef">pytnef</a> relies on the
<a href="http://sourceforge.net/projects/tnef/">tnef</a> command-line utility that is I think only available for unices (although it looks like it could be compiled for Windows).
</p>

<h3 id="emscripts">Email Scripts</h3>

<p>
If you need to produce email in a scripting environment,
Python offers all the basics in the smtplib module.
You can even add <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52243">MIME attachments</a>
with reasonable ease.
</p>



<h3 id="news">News Readers</h3>

<p>
Cross platform:
<a href="http://pan.rebelbase.com/">Pan</a> (GPL)
or
<a href="http://slrn.sourceforge.net/">slrn</a>
or
<a href="http://www.gnus.org/">Gnus</a>.
</p>
<p>
Free for Windows:
<a href="http://xnews.newsguy.com/">Xnews</a>
and
<a href="http://www.forteinc.com/main/homepage.php">Forté Free Agent</a>.
</p>


<h3 id="AV">AntiVirus</h3>

<p>
First let me offer an apparently outrageous suggestion:
individual users can often substitute good habits for AV software,
and even if you install AV software these good habits are crucial defenses.
That said,
whatever software you choose,
you may wish to test it on the <a href="http://www.eicar.org/">EICAR</a> test file.
</p>

<ul>
<li>
The only free and open source AV software that I know of is
the very interesting <a href="http://www.clamav.net/">ClamAV</a>. (License: GPL)
There is a <a href="http://www.clamwin.com/">ClamWin</a> project for Windows users.
</li>
<li>
<a href="http://www.avast.com/">avast! Home</a> is free for noncommercial use.
And <a href="http://www.grisoft.com/">AVG</a> currently offers a "free edition" that looks reasonably good
and customer satisfaction at AVG seems quite high
(at least in the email forums I frequent).
</li>
<li>Commercial:
There are many: do a web search.
Here are a couple with short comments.
<a href="http://www.f-prot.com/">F-Prot</a> is no longer free but it is cheap.
<a href="http://www.norman.com/">Norman Virus Control</a> is available on many platforms.
<a href="http://www.kaspersky.com/">Kaspersky AV</a> gets good marks for not interfering with other programs.
<a href="http://www.symantec.com">Norton Anti-Virus</a> seems thorough but I have heard reports of conflicts with other programs.
Many people are reporting obnoxious marketing practices at <a href="http://www.mcafee.com/">McAfee Security</a>, including
restricting the set of browsers usable for downloading antivirus updates by using unnecessary and incompatible ActiveX controls,
automatically enrolling new purchasers in a paid update program using the credit card information provided during an initial purchase and at the same time providing no easy way to change this,
and hitting you with pop-up ads every time you visit their site.
</li>
</ul>

<p>
TO AVOID SENDING AND RECEIVING VIRUSES:
<br />
SENDING
<br />
i. use plain text to send and receive
information whenever possible.
All word processors and spread sheets
can save as .txt.
There is seldom a real need for using
anything except plain text for email.
<br />
ii. When plain text is not possible
(because special formatting is required)
you can almost always use HTML.
All modern word processors
and spread sheets can save as HTML.
This is almost risk free, but to be
really safe you can turn off Java and
JavaScript in your browser preferences.
<br />
iii. When page formatting is crucial,
which it almost never is,
use Adobe's <acronym class="help" title="Portable Document Format">PDF</acronym> format.
You may need a PDF "printer driver" to do this
(such as Adobe Acrobat, Jaws, or some <a href="#freepdf">free alternatives</a> such as <a href="http://sourceforge.net/projects/pdfcreator/">PDFCreator</a>).
<br />
RECEIVING:
<br />
i. Many viruses are received as part of email attachments.
Other malware (known as worms) will email
themselves from an infected computer to many others.
So the best practice would be to not open <em>any</em> email attachments.
Unforunately, sometimes we need to open attachments.
ii.  If you must open an attachment, view the file extension.
The default in Windows is to turn off your ability to do this,
which means you can be tricked into thinking a dangerous
Visual Basic script <tt>filename.jpg.vbs</tt>
is really a safe <tt>.jpg</tt> file.
You can fix by following <a href="#windows-hints-extensions">this windows hint</a>.
For Windows users,
especially dangerous extensions are <tt>.exe</tt>, <tt>.com</tt>, <tt>.pif</tt>, <tt>.vbs</tt>.
Also dangerous are <tt>.doc</tt> and <tt>.xls</tt>.
(Comment: dangerous file types can be included as ``attachments'' to <tt>.pdf</tt> files as well,
which means you should not open such attachments with Adobe Acrobat either.)
<br />
iii. When possible, avoid the use of susceptible
proprietary file formats (such as Word or Excel).
Related to this, avoid the use of Outlook unless you know
how to turn off all its dangerous features.
And if you simply <strong>must</strong> open a document
in a MS format (e.g., because that's what
a work colleague sent you), learn how to
turn off the availability of macros.
You should also be cautious with any other
format that supports macros, which basically
means you should avoid exchanging information
in word processor formats (see i. and ii.  above).
<br />
iii. <strong>Never</strong> run a program file unless you
<strong>know</strong> it came from an <strong>impeccable</strong> source.
(For Windows users,
this includes file extenstions .exe, .com, .pif, .bat, and .vbs.)
<br />
iv. Windows users should <strong>disable</strong> autoplay,
since it allows arbitary executable to run automatically on your computer.
</p>
<p>
<b>Additional Comment:</b>
Many new viruses are not detected by anti-virus software.
Safe practices are necessary.
Furthermore, if the recipient wishes to read what you send in their
word processor, all modern word processors also import plain text (very safe),
HTML (pretty safe), and PDF (usually safe) very simply.
</p>







<h3 id="multimedia">Multimedia Resources</h3>

<p>
Since this is not a core interest of mine,
I list only a couple resources.
</p>
<ul>
<li>
The cross-platform <a href="http://pymedia.org/">PyMedia</a> Python module provides an interface for the digital media manipulation
(wav, mp3, ogg, avi, divx, dvd, cdda, etc).
It includes parsing, demutiplexing, multiplexing, coding and decoding.
</li>
<li>
<a href="http://www.videolan.org/">VideoLAN</a> provides "a highly portable multimedia player for various audio and video formats".
(License: GPL)
This is an amazing multiplatform, FOSS resource.
(Includes an installer for Windows users.)
If you need additional capabilities, you can try
<a href="http://www.divx.com/">DivX</a>.
</li>
</ul>

<p>
Attention Vista users: your operating system came without the Windows Media Player plugin.
Fortunately,
mozillaZine explains <a href="http://kb.mozillazine.org/Windows_Media_Player">how to install the WMP plugin</a>.
</p>


<h2>Programming</h2>

<h3>Modeling Languages and Solvers</h3>

<h4>Modeling Languages</h4>

<p>
The modeling languages most widely used by economists are commercial:
<a href="http://www.gams.com/">GAMS</a>
(with <a href="http://www.gams.com/docs/document.htm">online documenation</a>)
and <a href="http://www.copsmodels.com/gempack.htm">GEMPACK</a>
(with <a href="http://www.copsmodels.com/gpmanual.htm">online documentation</a>).
Economists use these primarily for CGE modeling.
(See these helpful <a href="http://www.ifpri.org/sites/default/files/publications/gamsexer.pdf">CGE exercises</a> with 
<a href="http://www.ifpri.org/publication/key-exercises-cge-modeling-using-gams">solutions</a>.)
</p>

<p>
Other alternatives are listed at <a href="http://plato.la.asu.edu/topics/tools.html">http://plato.la.asu.edu/topics/tools.html</a>.
A few are listed below.
</p>



<ul>
<li>
<a href="http://ascend.cheme.cmu.edu/">ASCEND</a>
is an object-oriented mathematical modeling environment
and a strongly typed mathematical modeling language.
(License: GPL.)
</li>
<li>
It looks like an interesting alternative may be <a href="http://www.modelica.org/index.shtml">Modelica</a>, 
an entity (object) oriented modeling language that may prove useful to economists.
There is a promising <a href="http://www.ida.liu.se/~pelab/modelica/OpenModelica.html">open source Modelica project</a>.
(Currently you need CygWin to run this.) 
</li>
<li>
<a href="http://www.jeannot.org/~js/code/index.en.html#PuLP">PuLP</a>
"is an LP modeler written in Python.
PuLP can generate .LP and .MPS files and call GLPK, COIN CLP/SBB, CPLEX or XPRESS to solve linear problems."
</li>
<li>
<a href="http://gsbkip.chicagogsb.edu/fml/fml.html">LPFML</a>
is a W3C Schema for representing linear-programming problem instances in XML.
See also the open source C++ classes to facilitate the exchange of information between modeling languages and solvers.
(Includes classes that allow many solvers to "read and solve problems in XML format and output the solution results in XML format."
Also includes an application "to create a model with the <a href="#AMPL">AMPL</a> modeling language and write the instance data in LPFML format for solver solution.")
</li>
<li>
<a href="ftp://ftp.mpi-sb.mpg.de/pub/guide/staff/barth/plam/plam.html">ProLog and Modelling (PLAM)</a>
"is an implementation in Prolog of an algebraic modelling language."
Can generate the solver independent MPS-format; works with a variety of solvers.
Needs Prolog; works with
Using <a href="ftp://www.mpi-sb.mpg.de/pub/guide/staff/barth/plam/pl-2.1.14.tar.gz">the free and open source SWI-Prolog</a>
(linked from the webpage).
together with lp_solve gives you a free modelling environment.
Add the free and open source <a href="ftp://www.mpi-sb.mpg.de/pub/guide/staff/barth/plam/lp_solve_2.0.tar.gz">lp_solve</a> to get a free modeling environment.
For stochastic programming problems,
add <a href="http://www.math.chalmers.se/~alten/stoplam/stochplam.html">stochplam</a>.
</li>
<li id="AMPL">
<a href="http://www.ampl.com/FAQ/index.html">AMPL</a>
</li>
<li>
<a href="http://www.aimms.com/aimms/index.cgi">AIMMS</a>.
"contains a modeling language that allows you to model linear programming models and it links to most available commercial solvers. It also contains an intergrated development environment with possibilities to build a graphical user interface via point-and-click."
</li>
<li>
<a href="http://carbon.cudenver.edu/~hgreenbe/imps/modler.html">MODLER</a> with <a href="http://carbon.cudenver.edu/~hgreenbe/imps/analyze.html">ANALYZE</a> and <a href="http://carbon.cudenver.edu/~hgreenbe/imps/randmod.html">RANDMOD</a>.
</li>
<li>
<a href="http://www.zib.de/koch/zimpl/zimpl.php">ZIMPL</a> translates 
linear or (mixed-) integer models
into the .lp or .mps file format 
(accepted by many solvers).
</li>
</ul>

<h4 id="solvers">Solvers</h4>
<p>
Naturally, many commercial modeling languages come with a variety of solvers.
Here are some other solvers.
</p>
<ul>
<li id="MathProg">
<a href="http://www.gnu.org/software/glpk/glpk.html">GNU Linear Programming Kit (GLPK)</a>
"supports the GNU MathProg language, which is a subset of the <a href="#AMPL">AMPL</a> language."
(Includes a translator for GNU MathProg and documentation.)
</li>
<li>
<a href="http://sedumi.mcmaster.ca/">SeDuMi</a>
"is a software package to solve optimization problems over symmetric cones.
This includes linear, quadratic, second order conic and semidefinite optimization, and any combination of these."
License: GPL.
</li>
<li>
<a href="http://www.jeannot.org/~js/code/index.en.html#COBYLA">COBYLA</a>
is "a derivative free non-linear optimizer that can deal with non-linear constraints."
(Provides a a Python interface.) 
</li>
<li>
<a href="http://www.coin-or.org/">COIN-OR</a> provides a variety of open source solvers.
</li>
<li>
<a href="http://www.zib.de/Optimization/Software/Soplex/">Soplex</a> is a simplex solver that is free for academic use.
</li>
<li>
You can use the solvers on the <a href="http://www-neos.mcs.anl.gov/neos/solvers/index.html">NEOS</a> server for free.
They offer an API to communicate with their XML-RPC  server, so you use NEOS from within your program.
(They offer a sample client written in Python.)
</li>
<li>
<a href="http://www2.am.uni-erlangen.de/~kocvara/pennon/">PENNON</a> from <a href="http://www.penopt.com/">PENOPT</a>.
</li>
<li>
<a href="http://www.llnl.gov/CASC/sundials/">SUNDIALS</a> is a useful suite of solvers,
written in C.
Also of interest: <a href="http://software.sandia.gov/trilinos/">The Trilinos Project</a>
strives to provide parallel solver algorithms in C++,
and it provides a <a href="#python">Python</a> interface to these.
</li>
<li>
<a href="http://ui505p06-mbs.ntc.zcu.cz/sfe">SFE</a>
is a finite element solver.
</li>
</ul>


<h3>Integrated Development Environments</h3>

<p>
For Python, <a href="http://mmm-experts.com/Products.aspx?ProductId=4">PyScripter</a> has an excellent reputation.
But it has limited support for threading.
(Windows only; license unknown.)
</p>
<p>
For Java,
consider the <a href="http://www.eclipse.org/">Eclipse</a> IDE.
(Eclipse is a "general purpose" IDE.)
Python users can also use Eclipse via the <a href="http://pydev.sourceforge.net/">Pydev</a> plugin.
</p>
<p>
For C and C++,
consider the <a href="http://www.a-a-p.org/index.html">Agide</a> IDE.
You can use Vim as your editor!
On Linux/KDE, you can alternatively use <a href="http://www.kdevelop.org/">KDevelop</a>,
which also support Vim as an editor.
</p>
<p>
<a href="http://vimmate.rubyforge.org/">VimMate</a>
is a light GTK-based IDE that embeds the Vim editor.
</p>
<p>
For Python:
<br />
- the general purpose <a href="http://leoeditor.com/">Leo</a> IDE includes a unique and powerful outlining facility (Language: Python; License: MIT)
<br />
- the relatively lightweight <a href="http://eric-ide.python-projects.org/">Eric</a> IDE gets very good reviews.  (Language: Python; License: GPLv3)
<br />
- <a href="https://github.com/davidhalter/jedi-vim">Jedi</a> helps turn VIM into a Python IDE by adding autocomplete.
</p>

<p>
For Android, Google has released <a href="http://developer.android.com/sdk/index.html">Android Studio in 2014</a>.
</p>


<h3 id="javascript">JavaScript</h3>

<p>
JavaScript is a dynamic, interpreted programming language whose origins
are in client-side scripting in the browser.
Most browsers now support JavaScript,
and client-side scripting has been used to create economic applications. [#paine.stark-2004-cheer]
See <a href="javascript-intro.html">JavaScript Basics</a> for more detail.
</p>

<h3 id="java">Java</h3>

<div>
Java is a strongly-typed object-oriented language.
If you want to program in Java,
consider the <a href="http://www.eclipse.org/">Eclipse</a> IDE.
The <a href="http://www.bluemarsh.com/java/jswat/">JSwat</a> debugger front end may also prove useful.
If your application is mathematical you may be interested in the
<a href="http://www.singularsys.com/jep/index.html">Java Mathematical Expression Parser (JEP)</a>.
Other Java related resources can be found at
  <ul>
<li><a href="http://www.jars.com">Java Applet Review Service</a>
</li>
<li> the <a href="http://www.developer.com/java/">Gamelan</a>.
    </li>
<li><a href="http://www.student.nada.kth.sel~d94-rol/javaaps.html">noda</a>
</li>
<li><a href="http://www.wordsmith.org/~anu/java/spirograph.html">spirograph</a>
</li>
<li><a href="http://www.ee.ryerson.ca:8080/~elf/abacus">abacus</a>
</li>
<li><a href="http://www.gragsie.com/Scrabble">Scrabble</a>
</li>
  </ul>
</div>

<p>
<a href="http://www.python.org">Python</a> is an obvious choice for server side scripting.
You might consider <a href="http://www.imatix.com/products.htm">Xitami</a> as a cross platform server solution,
or simply to <a href="http://www.mannyjuan.com/pythtips.htm">test your scripts</a>.
</p>

<h3>Cross Platform GUI</h3>

<p>
The obvious language independent FOSS choices currently (2005) seem to be TK and wxWindows,
with TK being simpler, more mature, and a bit slower and wxWindows being faster and more powerful but less stable.
Of course Java provides a language dependent solution.
</p>

<h4>Tkinter</h4>

<p>
Python comes with the Tkinter module,
which provides a Python interface to the TK graphical user interface (GUI).
<a href="http://www.3dartist.com/WP/python/tknotes.htm">Tkinter documentation</a> is spread around.
For a very brief introduction,
you can try <a href="http://www.freenetpages.co.uk/hp/alan.gauld/tutor2/tutgui.htm">Alan Gauld's tutorial</a>.
If you use Tkinter,
consider using <a href="http://pmw.sourceforge.net/">Python megawidgits (Pmw)</a>.
(You can also easily add graphing extensions with <a href="http://sourceforge.net/projects/blt/">BLT Toolkit</a>.
You may want to also get <a href="http://cars9.uchicago.edu/software/python/index.html">Mark Rivers's enhancements</a>.
</p>

<p>
<a href="http://tk-happy.sourceforge.net/">tk_happy</a>
allows very fast, menu guided tkinter GUI creation.
</p>

<h4>Curses</h4>

<p>
Until recently curses has been unavailable for Windows.
<a href="http://adamv.com/dev/python/curses/">Wcurses</a> is a curses module for Python that works under Windows.
There may also be some profit in considering <a href="http://www.microsoft.com/technet/interopmigration/unix/sfu/curseapp.mspx">curses applications on INTERIX</a>.
</p>

<h4>wxWindows</h4>

<p>
<a href="http://www.wxwindows.org/">wxWidgets</a> offers cross-platform API (C++ library) for writing GUI applications.
<a href="http://www.wxpython.org/">wxPython</a> is a Python extension module that wraps wxWidgets.
<a href="http://dabodev.com/about">Dabo</a> is a cross-platform application development framework,
written in Python atop the wxPython GUI toolkit.
(Dabo capabilities resemble Visual Basic or Visual FoxPro, but it's cross platform.)
</p>



<h2 id="graphics">Graphics</h2>

<ul class="menu">
<li>
<a href="#formats">Formats and Format Conversion</a>
</li>
<li>
<a href="#drawapps">Point and Click Drawing</a>
</li>
<li>
<a href="#drawlang">Drawing Languages</a>
</li>
<li>
<a href="#sparkplot">Sparklines</a>
</li>
<li>
<a href="#latexgraphics">Graphics for LaTeX</a>
</li>
</ul>

<h3 id="formats">Graphics Formats</h3>

<p>
There is some <a href="http://www.pymolwiki.org/index.php/Category%3ASoftware_Movies">useful background on the PyMol wiki</a>.
The <a href="http://www.lanl.gov/projects/ia/">Los Alamos National Laboratory Information Architecture</a> offers a useful <a href="http://www.lanl.gov/projects/ia/stds/ia680120.html">white paper on graphics formats</a>.
</p>

<h4>Encapsulated PostScript (EPS)</h4>

<p>
Encapsulated PostScript (<acronym class="help" title="Encapsulated PostScript">EPS</acronym>) remains the universal standard for graphics inclusion in journals and books.
(In some applications,
it is being challenged by Adobe's Portable Document Format (<acronym class="help" title="Portable Document Format">PDF</acronym>).
It therefore pays to learn a drawing application or language that allows you to generate encapsulated PostScript (<acronym class="help" title="Encapsulated PostScript">EPS</acronym>).  
</p>

<h4>Portable Network Graphics (PNG)</h4>

<p>
Currently the best choice for web graphics.
(GIF and JPEG suffer patent problems, although these patents are finally expiring.)
Before placing graphics on the Web, visit the <a href="http://www.libpng.org/pub/png/">Portable Network Graphics (PNG) homesite</a>.  
</p>

<p id="MNG">
MNG and APNG
<br />
The animated version of PNG is called
<a href="http://www.libpng.org/pub/mng/">MNG, for Multiple-image Network Graphics</a>.
It supports looping (including nested loops),
clipping, deltas, and other features, plus
everything PNG supports-- including alpha
transparency.
Unfortunately implementations have been lagging.
However FireFox supports the <a href="https://wiki.mozilla.org/APNG_Specification">animated PNG (APNG)</a> format,
which is less complete but quite capable.
</p>

<h4 id="SVG">Scalable Vector Graphics</h4>

<p>
<acronym class="help" title="Scalable Vector Graphics">SVG</acronym>
<br />
A rising format for web graphics and may already be useful if you need vector graphics and/or animation.
You can convert <acronym class="help" title="Encapsulated PostScript">EPS</acronym> to PNG or <acronym class="help" title="Scalable Vector Graphics">SVG</acronym>.
(See <a href="#convert">below</a>.)
It is possible to <a href="http://jan.kollhof.net/projects/svg/svgpdf/index.xhtml">embed SVG in PDF</a>.
For extensive SVG manipulation and generation tools,
see <a href="http://xmlgraphics.apache.org/batik/">Batik</a>.
</p>

<p>
<a href="http://www.w3.org/Graphics/SVG/">Scalable Vector Graphics</a> is a royalty free vector graphics standard for the Web,
and it is a powerful animation format.
(If you have simple, static graphics to produce, you might write them in PostScript and then translate using <a href="http://www.geocities.com/wglunz/pstoedit/">pstoedit</a>.)
<br />
One of many nice things about SVG is that it can be embedded into PDF,
animations and all!
(See this <a href="http://www.carto.net/papers/svg/us_population/us_population.pdf">very cool example</a>.
Here is a <a href="http://www.kevlindev.com/utilities/">perl script</a>.
Here is a <a href="http://www.tu-harburg.de/parallel/koehnlein/privat/SVGtoPDF.java">Java converter</a>.
Here is a <a href="http://jan.kollhof.net/projects/svg/svgpdf/index.xhtml">Python script</a>.
(If you can find Leonard Rosenthol's Acrobat plug-in, let me know.
It seems to have disappeared.)

<br />
Another nice thing is that you can <a href="http://surguy.net/articles/client-side-svg.xml">move image generation to the client side</a>.
</p>

<p>
Browser support for SVG:
<br />
<a href="http://www.opera.com">Opera</a> and <a href="http://www.mozilla.com/">FireFox</a>
have native support.
(FireFox reports the <a href="http://www.mozilla.org/projects/svg/">current status of SVG support</a>.)
IE 7 is badly lagging:
you must use a plug-in (such as <a href="http://wiki.svg.org/Adobe_SVG_Viewer">Adobe SVG viewer</a>.
(<a href="http://www.svgi.org/">Other SVG viewers</a> are available.)
If you care about IE users,
you can <a href="http://labs.silverorange.com/archives/2006/january/howtoinclude">provide a back-up PNG.</a>.
(IE's PNG support is buggy too; oh well.)
</p>



<h3 id="drawlang">Drawing Languages</h3>

<p>
With all the point and click drawing applications currently available,
why bother with a drawing language?
The answers are generally <a href="http://www.american.edu/econ/notes/psdraw.pdf">precision, speed, and fun</a>,
often in that order.
This section concentrates on 2-D drawing, with emphasis on the PostScript drawing language,
while mentioning a few other interesting possibilities.
</p>

<h4 id="postscript">PostScript</h4>

<p>
PostScript is a very useful device independent page description language.
If you want to precisely render a vector graphic,
you may well find it convenient to draw it yourself in PostScript.
<!-- 
I offer a <a href="http://www.american.edu/econ/notes/psdraw.pdf">brief introduction to PostScript drawing</a>,
which is still under revision.
-->
See some <a href="#ps_hints">PostScript hints</a> below.
</p>

<!--
Starting points:
 The introductory chapter Casselman's A Manual of Mathematical Illustration
 http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/index.html
 First Guide to PostScript
 http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html
 David Maxwell's online PostScript manual maxwell@math.ubc.ca
 http://adela.karlin.mff.cuni.cz/netkarl/prirucky/Flat/PS-toc.html
Then get the then get the  PostScript Language Tutorial &amp; Cookbook
http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF
and possibly Glenn Reid's Thinking in PostScript
http://www.rightbrain.com/pages/books.html
Finally, you will probably want the PostScript Language Reference Manual
(also known as the Red Book)
http://partners.adobe.com/asn/developer/technotes.html#postscript
One last suggestion:
You will have to buy McGilton and Campione's PostScript by Example,
but it is worth it!
-->


<div>
There are many other online resources.
Start with:
the introductory chapter <a href="http://www.math.ubc.ca/~cass/graphics/manual/">Casselman's Mathematical Illustrations: A Manual of Mathematical Illustration</a>.
and <a href="http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html">First Guide to PostScript</a>.
Then get the then get the <a href="http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF">PostScript Language Tutorial &amp; Cookbook</a> 
and possibly 
Glenn Reid's <a href="http://www.rightbrain.com/pages/books.html">Thinking in PostScript</a>.
Finally, you will probably want the <a href="http://partners.adobe.com/asn/developer/technotes.html#postscript">PostScript Language Reference Manual</a> 
(also known as the Red Book) by Adobe Systems.
Jim Land offers a metalist of  <a href="http://www.inkguides.com/postscript.asp">Internet Resources for PostScript and GhostScript</a>,
and there is a <a href="http://ftp.lth.se/archive/usenet/comp.sources.postscript/">usenet archive</a> of sample code.
<a href="http://www.acumentraining.com/acumen_journal.html">Acumen Journal</a> 
publishes PostScript code examples.
So does Don Lancaster in his <a href="http://www.tinaja.com/post01.asp">PostScript Library</a>.
You will want to see what you're producing: I recommend getting <a href="http://www.cs.wisc.edu/~ghost/">GhostScript and GhostView or GSView</a>.
For some cool PostScript code,
look at <a href="http://www.mit.edu/afs/sipb/contrib/postscript/">MIT PostScript archive</a>.
</div>

<div>
Many people prefer to use a <a href="#psmeta">meta-language</a> to produce their PostScript graphics.
Most of these can also produce PDF.
Some produce other formats as well.
</div>

<h4>Flash</h4>

<div>
Acrobat fully supports Flash since version 9,
making PDF an attractive format for interactive documents.
(Unfortunately, Acrobat's support for SVG appears to have been dropped,
but you may be able to convert your graphics using <a href="http://freshmeat.net/projects/svg2swf/">svg2pdf</a>.)
<a href="http://pyswftools.sourceforge.net/">PySWFtools</a> provides a higher
level interface to the <a href="http://www.libming.org/">Ming</a> libary.
The easiest way to place SWF files in PDF documents is probably pdftex with the <a href="http://ctan.tug.org/tex-archive/macros/latex/contrib/movie15/">movie15</a> package.
(Jens Nockel offers a <a href="http://www.uoregon.edu/~noeckel/PDFmovie.html">very simple example</a>.)
</div>


<h4 id="drawlang3d">3D Drawing</h4>

<p>
3D drawing:
For simplicity and power,
it will be hard to beat <a href="http://www.frontiernet.net/~eugene.ressler/">Sketch</a>.
(Langauge: C++ (binaries available); License GPL)
Particularly helpful to LaTeX users is its support of <a href="#tikz">tikz</a>.
(See Kjell Magne Fauske's nice <a href="http://www.fauskes.net/nb/introduction-to-sketch/">introduction to Sketch</a>,
which includes full examples.)
</p>

<p>
Try the <a href="http://www.povray.org/">Persistence of Vision Ray Tracer (POV-Ray)</a>.
If you need high performance real-time 3D,
consider <a href="http://irrlicht.sourceforge.net/">Irrlicht</a>.
If you are an OpenGL user,
<a href="http://handhelds.freshmeat.net/projects/superficie">superficie</a> may be useful,
although development appears quiescent. (License: GPL)
</p>

<h4 id="plotlang3d">3D Plotting</h4>

<p>
3D plotting:
For nice, accurate surface plots,
there is probably no simpler solution than <a href="#gnuplot">gnuplot</a>.
The <a href="http://code.google.com/p/sympy/wiki/PlottingModule">SymPy plotting module</a> is very interesting.
<a href="http://qwtplot3d.sourceforge.net/">QwtPlot3D</a> appears very powerful,
and <a href="http://pyqwt.sourceforge.net/">PyQwt3D</a>
provides bindings for Python users who wish to produce scientific 3D plots. (Now supports NumPy arrays.).
Other possibilities include <a href="http://www.vpython.org/">Visual Python</a>
and <a href="http://cgkit.sourceforge.net/">Python Computer Graphics Kit</a>.
Also, <a href="http://www.opendx.org/">OpenDX</a> looks like a very powerful open source implementation of the IBM Data Explorer (DX), and there is also a <a href="http://people.freebsd.org/~rhh/py-opendx/">Python binding</a>.
<a href="http://www.llnl.gov/visit/home.html">VisIt</a> looks to be an extremely powerful way to produce 3D animations.
</p>

<p id="VTK">
The <a href="http://www.vtk.org/">Visualization Toolkit (VTK)</a>
"software system for 3D computer graphics, image processing, and visualization"
consisting of "a C++ class library, and several interpreted interface layers including Tcl/Tk, Java, and Python."
(License: BSD-like, but containing some patented technology.)
<br />
Hint: Find yourself a good interface to VTK.
VTK provides wrappers for Python, Tcl, and Java, but the wrappers resemble VTK more than the supported language.
Python users may like <a href="#MayaVi">MayaVi</a>,
but this still requires VTK knowledge.
For true ease of use, consider Enthought's <a href="http://gael-varoquaux.info/physics/slides_Scipy2007.pdf">mlab</a> Python framework for access and manipulation of MayaVi2 objects.
(Also note that <a href="http://cens.ioc.ee/projects/pyvtk/">PyVTK</a> can write VTK files from <a href="#numpy">NumPy</a> data.  
<a href="http://www.enthought.com/enthought/wiki/TVTK">TVTK</a> provides a powerful and "Pythonic" interface to the <a href="http://www.vtk.org/">Visualization Toolkit</a>.
With some feature resemblance to <a href="#MayaVi">MayaVi</a>,
the possibly more powerful <a href="http://cens.ioc.ee/projects/pyvtk/">Paraview</a> is written in Tcl/Tk rather than Python.  
</p>

<p>
More 3D plotting solutions:
</p>
<ul>
<li>
<a href="http://plplot.sourceforge.net/">PLplot</a> is a powerful plotting library,
which includes bindings for a variety of languages.
This library has an excellent reputation.
(Language: C, with many bindings including Python; License: LGPL)
</li>
<li>
<a href="http://blender3d.org/">Blender</a> allows Python scripted 3D animation.
</li>
<li>
<a href="http://www.scipy.org/WilnaDuToit">mat3d</a> is an OpenGL 3D-plotting solution under Python.
</li>
</ul>


<p>
<a href="http://www.slac.stanford.edu/grp/ek/hippodraw/">HippoDraw</a>
produces interactive graphics for data analysis.
Hippodraw includes Python bindings and a Python extension module.
</p>


<h4>Rendering Engines</h4>

<a href="http://www.antigrain.com/">Anti-Grain Geometry</a> (Language: C++; License: GPL 2+)

<h4 id="animate">Animation</h4>

<p>
Simon Yuill offers a nice animation <a href="http://www.yourmachines.org/tutorials/mgpy.html">tutorial</a>
(with a Python emphasis).
</p>

<p>
<a href="http://heim.ifi.uio.no/~hpl/Pmw.Blt/doc/">Pms.Blt</a> provides a Python interface to the <a href="http://sourceforge.net/projects/blt/">BLT Graph</a> plotting library.
</p>

<ul>
<li>
Un*x and Windows users can convert collections of PNG files into motion video using
<a href="http://freshmeat.net/projects/mplayer/">MPlayer</a>.
You can compile this yourself or find <a href="http://www.mplayerhq.hu/design7/dload.html">prebuilt packages</a>.
(A <a href="http://web.media.mit.edu/~lifton/code/GraphMovies/">tutorial</a> is available.
To produce a .avi file, try something like
<code>mencoder mf://*.png -mf type=png:w=600:h=500:fps=10 -ovc lavc -lavcopts vcodec=wmv2 -oac copy -o animation.avi
</code>
or like this
<code>mencoder 'mf://*.png' -mf type=png:fps=12 -ovc lavc -lavcopts vcodec=mpeg4 -o animation.avi
</code>.)
If you have <a href="http://www.mpeg.org/MPEG/MSSG/">mpeg2encode</a>,
this can also be done with <a href="http://www.imagemagick.org/">ImageMagick</a>,
try <code>convert -delay 20 c:/myimages/img*.png c:/myvideo/imgs.mpg</code>.
</li>

<li id="ffmpeg">
<a href="http://ffmpeg.org/">FFMPEG</a> can "record, convert and stream audio and video".
(License: LGPL; Language: C)
For example, you can pipe a series of Matplotlib graphs to FFMPEG to produce an animated graph.
Or you can save them as PNG files named (frame000.png, frame001.png, etc) and do
<code>ffmpeg -b 8000 -f mpeg2video -r 30 -i frame%03d.png movie.mpeg</code>.
You can also produce an AVI like this:
<code>ffmpeg -r 10 -i frame%03d.png -f avi -vcodec msmpeg4v2 -y movie.avi</code>.
<!-- l:\software\ffmpeg\ffmpeg.exe -r 2 -i temp%03d.png -f avi -vcodec msmpeg4v2 -y movie.avi -->
Works great!
Note that AVI support very low framerates; MPEG does not.
(Windows users are fortunate that celtic_druid has been compiling fairly up-to-date <a href="http://ffdshow.faireal.net/mirror/ffmpeg/">Windows binaries</a>.)
</li>
<li>
You can create animated .gif files with <a href="http://www.whitsoftdev.com/page.php?id=11">UnFREEz</a> by WhitSoft Development.
</li>
<li>
You can create PDF files containing animations with LaTeX's <a href="http://www-user.uni-bremen.de/~skupin/pdfanim/Doc/PDFAnim_Giude.pdf">PDFAnim</a> package.
Support for storing the entire animation as a mutlipage encapsulated PDF would be a nice feature,
if someone has the energy to implement this!
</li>
<li>
You can include MPEG or AVI movies in PDF using pdf(La)Tex and for example
the <a href="http://www.tug.org/tex-archive/macros/latex/contrib/movie15/">movie15 package</a>.
(This is on platforms where Adobe Reader supports this, including Windows and Mac.)
Jens Nöckel offers a simple <a href="http://darkwing.uoregon.edu/~noeckel/PDFmovie.html">tutorial</a>.
</li>
<li>
The <a href="#MNG">MNG</a>, <a href="#SVG">SVG</a>, and GIF formats also support animation.
</li>
</ul>

<p>
<a href="#blender">Blender</a> supports powerful 3D drawing and animation,
which can be assisted by <a href="http://blender3d.org/cms/Python_Scripts.3.0.html">Python scripts</a>.
</p>

<p>
<a href="http://sourceforge.net/projects/harddiskogg/">HarddiskOgg</a>
can record analog audio
"directly to Ogg Vorbis/MP3/Wave with on-the-fly normalization".
(License: GPL)
</p>

<p>
HTML % includes a VIDEO element, supported by FireFox 3.5+ and Chrome 3.0+.
(See <a href="http://camendesign.com/code/video_for_everybody">Video For Everybody</a> for usage hints.)
This enables native <a href="http://www.theora.org/">OGG/Theora</a> video playback in Firefox 3.5!
For conversion of video formats,
you might try <a href="http://handbrake.fr/">HandBrake</a>. (License: GPL)
</p>


<h3 id="pyplot">Plotting in Python</h3>

<p>
See the <a href="http://www.scipy.org/wikis/topical_software/TopicalSoftware#Visualization">SciPy TopicalSoftware Wiki</a> for a more complete list of options.
</p>

<h4 id="python2d">2D Graphics</h4>

<ul>
<li id="matplotlib">
For publication quality 2d graphics,
I like <a href="http://matplotlib.sourceforge.net/">Matplotlib</a>.
(It also supports 3d graphics, but I have not used this functionality.)
This is truly amazing free and open source graphics software.
Its <code>pyplot</code> module provides quick-and-easy MATLAB-like graphing functionality.
For finer grained control, you may prefer Matplotlib's <a href="#oompl">object-oriented API</a>.
Matplotlib can save to a variety of formats,
including SVG (which you can then manipulate with <a href="#Inkscape">Inkscape</a>).
See the <a href="#mpl-hints">Matplotlib hints</a> below.
</li>
<li>
<a href="http://soft.proindependent.com/qtiplot.html">QtiPlot</a> is fully Python scriptable.
(License: GPL)
</li>
<li>
It is possible to <a href="#gnuplot-hints">control gnuplot</a> from Python
with <a href="http://gnuplot-py.sourceforge.net/">Gnuplot.py</a>.
</li>
<li>
<a href="http://www.spectronon.com/wiki/index.php?title=Main_Page">Spectronon</a>
is for analyzing hyperspectral data (images with many more bands of color than 
the traditional 3: red, green, blue).
It can also be useful for more traditional image processing.
Written in python and utilizes Matplotlib, NumPy, PIL, and scipy.
Includes a fairly simple  plug-in architecture for 
extending some of Spectronon's behavior.  
</li>
<li>
It is possible to <a href="#gnuplot-hints">control gnuplot</a> from Python.
</li>
<li>
<a href="http://www.cyberus.ca/~g_will/wxPython/wxpyplot.html">WxPyPlot</a> is fast and lightweight.
</li>
<li>
<a href="http://biggles.sourceforge.net/">Biggles</a> is a slick and simple Python module for 2-D plots.  
</li>
<li>
<a href="http://www.scripps.edu/~sanner/python/viper/">Vision</a>
(formerly ViPEr)
is a visual programming environment for graphics manipulation in Python,
which provides many transformation and visualization tools.
</li>
</ul>

<h4 id="python3d">3D Graphics</h4>

<ul>
<li id="MayaVi">
For complex data visualization tasks,
you can use <a href="http://mayavi.sourceforge.net">MayaVi</a>,
which uses <a href="#VTK">The Visualization Toolkit (VTK)</a>.
(Unfortunately VTK can be a challenge to install.)
Included are utilities for simple surface and image plots.
There are also other <a href="#VTK">VTK based Python solutions</a>.
<a href="http://code.enthought.com/mayavi2/">MayaVi 2</a>
is supposed to be easier to install and very nicely scriptable.
</li>
<li>
It is possible to <a href="#gnuplot-hints">control gnuplot</a> from Python
with <a href="http://gnuplot-py.sourceforge.net/">Gnuplot.py</a>.
</li>
<li>
<a href="http://ivupy.sourceforge.net/">IVuPy</a>
provides 3-D visualization classes.  Qt based. (GPL)
</li>
</ul>

<h4>Network Graphics</h4>

<ul>
<li>
<a href="http://projects.forked.de/graph-tool/">graph-tool</a>
is a very fast Python module (based on a C++ library).
(License: GPL)
</li>
<li>
<a href="http://networkx.lanl.gov/">NetworkX</a>
</li>
</ul>

<h4 id="pythonanimate">Animation</h4>

<ul>
<li>
You can use <a href="#matplotlib">Matplotlib</a> to make "movies".
<a href="http://www.physik.tu-dresden.de/~hlubek/video.zip">Here's how.</a>
(Requires Python Imaging Library and <a href="#ffmpeg">ffmpeg</a>.)
</li> 
<li>
If you just need to display animation in real time,
you may be satisfied by scripting a sequence of <a href="#gnuplot">gnuplot</a> figures
with short pauses between them.
You can use <a href="http://gnuplot-py.sourceforge.net/">Gnuplot.py</a>.
</li>
</ul>




<h3 id="convert">Graphics Format Conversion</h3>

<h4>Convert to <acronym class="help" title="Encapsulated PostScript">EPS</acronym></h4>

<p>
The cross-platform standard for graphics is Encapsulated PostScript (<acronym class="help" title="Encapsulated PostScript">EPS</acronym>).
<acronym class="help" title="Encapsulated PostScript">EPS</acronym> is generally the expected graphics format by publishers
(e.g., when you submit drawings for a book or journal article).
The most common file conversion problem is therefore taking a file produced in a different format and converting it to <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
</p>

<ul>
<li>
<a href="http://dktools.sourceforge.net/bmeps.html">bmeps</a>
converts bitmap formats (e.g., PNG or TIFF)
to EPS.
</li>
<li>
<a href="http://tex.aanhet.net/epspdf/">epspdf</a> can "round trip" between EPS and PDF.
</li>
<li>
Python users can use the <a href="http://www.pythonware.com/products/pil/index.htm">Python Imaging Library</a> to perform format conversions.
(You can supplement this with the <a href="http://imgtops.sourceforge.net/">imgtops</a> utility.)
</li>
<li><a href="http://www.imagemagick.org/">ImageMagick</a> supports conversion from virtually any format to <acronym class="help" title="Encapsulated PostScript">EPS</acronym> (or any other format).
(Binaries for many platforms, including Windows, can be found by following the appropriate links from the home page.)
(GPL compatible license.)
</li>
<li>
<a href="http://autotrace.sourceforge.net/">AutoTrace</a> converts bitmaps to vector graphics.
(GPL)
</li>
<li><a href="http://www.wmf2eps.de.vu/">WMF2EPS</a> is intended to simplify the production of <acronym class="help" title="Encapsulated PostScript">EPS</acronym> graphics from WMF files under Windows95/NT, with bounding boxes correctly included. (License: shareware.)
It relies heavily on <a href="ftp://ftp.adobe.com/pub/adobe/printerdrivers/">Adobe's printer drivers</a>,
so be sure you update yours.
<a href="http://www.kellogg.nwu.edu/researchcomputing/miktex-install.htm">Useful installation tips</a> can be found.
</li>
<li id="jpeg2eps">
There are a number of good options for converting JPEG files to EPS.
Note that PostScript (level 2+) supports JPEG, so this is largely a matter of adding an appropriate wrapper.
My favorite approach is to use the ability of <a href="#pyx_hints">PyX</a> to <a href="http://pyx.sourceforge.net/examples/bitmap/jpeg.html">insert JPEG images</a> into EPS and PDF files.
A more popular approach is to use <a href="http://www.pdflib.com/">PDFlib</a>'s very fast <a href="http://www.pdflib.com/download/free-software/jpeg2ps/">jpeg2ps</a> converter. (Language: C)
Lee Sau Dan provides a <a href="http://www.informatik.uni-freiburg.de/~danlee/fun/jpeg2eps">perl script that does much the same thing</a>. (Licence: GPL2)
An interesting approach is <a href="http://rses.anu.edu.au/~andy/jpeg2eps/">jpeg2eps</a>,
which is written in PostScript (and therefore requires an interpreter, such as GhostSript, to run);
it wraps JPEG files so that an EPS interpreter can handle them.
The truly adventurous can try <a href="http://www.tinaja.com/text/jpeg2pdf.html">Don Lancaster's recipe</a>,
which is code to be inserted directly into a PostScript file.
(After a few minutes trying, I did not get this to work, but Lancaster is brilliant so it should.
Note that your Distiller may have disabled file reading and writing by default; you will need to fix this.)
</li>
<li>
<a href="http://www.pdflib.com/jpeg2ps/">jpeg2ps</a> wraps the JPEG file formats in a PostScript wrapper,
without uncompressing the images.
(PostScript Level 2 and Level 3 interpreters support decompression of JPEG file formats (JFIF but not JPEG2000).)
</li>
<li>
<a href="http://www.mayura.com/">Mayura Draw</a> is a shareware vector drawing program for Windows that can read in WMF files and export <acronym class="help" title="Encapsulated PostScript">EPS</acronym>,
although this currently has a few bugs.
</li>
<li>
If you have an X-server,
you can use the <a href="#xv">xv</a> image manipulation program.
</li>
</ul>

<h4>Convert to PNG</h4>
<p>
PNG is the current standard for web images.
If you have produced an image for the web in a different format,
see the <a href="http://www.libpng.org/pub/png/pngapcv.html">LibPNG list of converters</a>.
</p>

<h4>Convert to <acronym class="help" title="Portable Document Format">PDF</acronym></h4>

<p id="freepdf">
GhostScript can convert many file formats,
including PS to <acronym class="help" title="Portable Document Format">PDF</acronym>.
You can combine GhostScript with the <a href="#redmon">Redirection Port Monitor (RedMon)</a> to produce <acronym class="help" title="Portable Document Format">PDF</acronym> files (see <a href="http://www.cs.wisc.edu/~ghost/redmon/en/redmon.htm#469">helpful directions</a>).
<a href="http://home.hccnet.nl/s.vd.palen/FreeDist.html">FreeDist</a> is a Visual Basic program can automate this process for Windows users.
<a href="http://www.webxd.com/zipguy/freepdf.htm">FreePDF</a> seems to offer similar functionality to FreeDist.
<a href="http://www.pdf995.com/">PDF995</a> is another free (gratis) but not open source alternative.
</p>

<p>
If you need to convert entire HTML documents to PDF,
try <a href="http://www.htmldoc.org/">HTMLDOC</a>.
Perl users can try <a href="http://user.it.uu.se/~jan/html2ps.html">html2ps</a>
and then use GhostScript.
If your document is well formed XML,
<a href="http://www.re.be/css2xslfo/">CSSToXSLFO</a> offers very interesting possibility.
It converts an XML document, together with a CSS2 style sheet, into an XSL-FO document.
The document "can then be converted into PDF, PostScript, etc. with an XSL-FO-processor",
which is included. (License: Public Domain)
</p>

<ul id="print2pdf">
<li>
Windows users can use
<a href="http://sourceforge.net/projects/pdfcreator/">PDFCreator</a>.
(GPL)
</li>
<li>
<a href="http://www.jawspdf.com/">Jaws</a>:
Use Jaws PDF Creator is a printer driver you can use to create PDF files.
Educational pricing available.
</li>
<li>
Adobe Acrobat:
<br />
For best results, follow these steps.
<br />
1. Install the AdobePS Distiller as your PostScript printer.
(You'll find the installation program on your Adobe Acrobat CD under drivers/Win95/adobeps4/setup.exe.)
 2. In the printer properties,
under the Fonts tab, have the fonts sent as Type 42.
3. Start up the Acrobat Distiller.
Under the Font Embedding tab of the Distiller job
options, choose Embed All Fonts.
4. Print your .dvi file to
file using the AdobePS Distiller as your printer.
This produces a postscript file with a .prn
extension. If you have version 4 if also produces
your .pdf file automatically (unless you turned
this off.) If you have version 3, there is one
more step:
5. Run the Distiller on your .prn file to produce the
viewable .pdf file.
</li>
</ul>

<div>
Abiword allows you to convert/print from the command line.
It reads ODF and RTF (which can be produced by Word).
<br />
unoconv is a Python script that uses the uno/pyuno access to the OpenOffice API.
You my need to start an instance of oowriter:
problems were reported with the --listener option as late as 2009.
</div>



<h4>Other Graphics Format Conversions</h4>
<ul>
<li>
<a href="http://www.pstoedit.com/">pstoedit</a> translated PostScript and <acronym class="help" title="Portable Document Format">PDF</acronym> graphics into other vector formats, including (on Windows platforms) WMF.
It is included on the GhostView menu <tt>Edit/Convert to Vector Format</tt>.
</li>
<li>
<a href="http://www.imagemagick.org/">ImageMagick</a> is a set of free graphics utilities that can convert from virtually any format to any other format.
(Binaries for the Windows platform can be found by following the appropriate links from the home page.)
Support for some of the formats are delegated to libraries or external programs.
For example, ImageMagick requires GhostScript to read PostScript and <acronym class="help" title="Portable Document Format">PDF</acronym> files.
</li>
<li>
GhostScript can convert many file formats.
</li>
<li>
<a href="http://stud1.tuwien.ac.at/~e9227474/english.htm">IRFAN View</a> is a freeware (for noncommercial use) graphics viewer that supports many graphics conversions, including PNG graphics.
<a href="http://www.softwarecenter.net/irfanview/">IrfanView</a> is usable both as a GUI and from the command line. 
(It supports batch operations.)
It supports many different file type conversions, but does not yet convert to <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
</li>
</ul>



<h3 id="drawapps">Drawing Applications</h3>

<p>
There is an almost limitless variety of high quality commercial drawing applications with pricing roughly linked to functionality.
Rather than attempt to list or compare those,
I will focus on a few cross-platform alternatives.
</p>


<h4 id="psmeta">Metalanguages for PostScript</h4>

<p id="pyx">
Python users have a number of fine alternatives.
For serious 2-D drawing,
I like <a href="http://pyx.sourceforge.net/">PyX</a> very much.
PyX also has some support for 3D graphics.
(See my <a href="#pyx_hints">PyX hints</a> below.)
</p>

<p>
While PyX is great for data-based graphs,
I often find myself using <a href="http://matplotlib.sourceforge.net/">Matplotlib</a> for these.
(<a href="http://matplotlib.sourceforge.net/">Matplotlib</a> is a wonderful 2-D plotting package which also supports powerful interactive graphics.)
PyX and Matplotlib support the generation of EPS and PDF plots with LaTeX text.
(Additionally, Matplotlib provides an impressive <a href="http://matplotlib.sourceforge.net/matplotlib.mathtext.html">mathtext</a> capability independent of LaTeX.)
</p>

<p>
Matplotlib and Pyx currently take different approaches to math text.
PyX uses LaTeX to typeset the math,
so you must have a working LaTeX installation.
Also, Pyx generates only PostScript and PDF graphics with this approach.
Matplotlib uses its own parser and layout engine
to typeset math text with Type 1 computer modern fonts.
You do not get the full power of TeX typesetting,
but you can produce outputs in a variety of formats
(including EPS and PNG).
Here are <a href="http://matplotlib.sourceforge.net/matplotlib.mathtext.html">some details</a>.
</p>



<p>
Matplotlib supports spark graphs (sparklines) via the <a href="http://agile.unisonis.com/proj/sparkplot/sparkplot.py">sparkplot</a> module.
(Sparklines can also be produced with PIL using the <a href="http://bitworking.org/projects/sparklines/">Sparkline Generator Web Application</a>.)
</p>


<p> 
Other possibilities:
<br />
<a href="http://asymptote.sourceforge.net/">Asymptote</a> is a powerful and popular language for drawing 2D and 3D graphs.
The syntax resembles Metapost.
Support LaTeX typesetting of labels.
Asymptote allows easy generation of animations (animated GIFs and MPEGs)!
(License: GPL 3.0)
<br />
<a href="http://code.enthought.com/kiva/">Kiva</a>
"is a multi-platform Display PDF 2D drawing engine that supports multiple output backends, including wxWidgets on Windows, GTK, and Carbon, a variety of raster image formats, PDF, and Postscript."
(Requires <a href="#reportlab">ReportLab</a> for PDF output.)
<br />
<a href="http://home.gna.org/pychart/">PyChart</a> is excellent for quick, simple, flexible charts.
<br />
<a href="http://www.linmpi.mpg.de/dislin/">DISLIN</a> is free for non-commercial use and is available as Python extensions.
<br />
<a href="http://home.gna.org/veusz/">VUESZ</a> is a PyQT based scientific plotting package.
</p>
<ul>
<li>
Particularly popular among LaTeX users:
<a href="http://www.tex.ac.uk/tex-archive/graphics/metapost/">MetaPost</a>,
<a href="http://www.tex.ac.uk/tex-archive/graphics/pstricks/">PSTricks</a>,
and <a href="#pgf">PGF</a>.
</li>
<li>
<a href="http://www.cs.utk.edu/~plank/plank/jgraph/jgraph.html">Jgraph</a> provides a simple metalanguage for high quality PostScript output.
Take a look at the <a href="http://www.cs.utk.edu/~plank/plank/classes/cs494/494/notes/Jgraph/lecture.html">Jgraph lecture</a> to see how this works.  
</li>
<li>
<a href="http://www.cs.nott.ac.uk/~rvb/lisp/plot-2d/">Plot-2D for Garnet (Common Lisp)</a> is a powerful graphing package that produces PostScript output.
</li>
<li>
For scientific graphics,
and interesting PostScript metalanguage is <a href="http://gri.sourceforge.net/">Gri</a>.
</li>
<li>
If you choose a metalanguage without LaTeX support,
then you may want to use the <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/supported/psfrag/">PSfrag</a> package to use your LaTeX fonts within your .eps files.
Alternatively, some applications allow you to produce EPS files with supporting LaTeX.
</li>
<li>
I find <a href="#gnuplot">gnuplot</a> to do this very well.
</li>
<li>
The MATLAB m-function <a href="http://www.mathworks.de/matlabcentral/fileexchange/4638">laprint.m</a>
is a graphical user interface which saves a MATLAB plot in an .eps file with an accompanying tex file.
The .eps file contains PSfrag replacements which are matched by the .tex file (so the .tex file inserts corresponding LaTeX code).
It requires MATLAB 5.
</li>
</ul>

<ul>
<li>
<a href="http://glx.sourceforge.net/">Graphics Layout Engine (GLE)</a>
allows output as EPS, PS, PDF, JPEG, and PNG.
(License: BSD)
</li>
<li>
<a href="http://ngwww.ucar.edu/">NCAR command language</a> is free on Unix platforms.
<a href="http://ngwww.ucar.edu/">NCAR graphics</a> is free and open source.
It can be run under Windows in a CygWin environment.
</li>
<li>
The <a href="http://www.astro.caltech.edu/~tjp/pgplot/">PGPLOT</a> Graphics Subroutine Library is a "Fortran- or C-callable, device-independent graphics package for making simple scientific graphs. It is intended for making graphical images of publication quality with minimum effort on the part of the user. For most applications, the program can be device-independent, and the output can be directed to the appropriate device at run time."
There appears to be some overlap in functionality with the popular
<a href="http://www.boutell.com/gd/">GD Graphics</a> C library.
</li>
</ul>

<p>
<a href="http://perso.wanadoo.fr/obrecht/index.html">Eukleides</a> is an amazing Euclidean drawing language that can save your drawings as pstricks or in <acronym class="help" title="Encapsulated PostScript">EPS</acronym> format.
It is designed to be very natural for geometric thinking.
Sadly it is so far for Unix only.
</p>

<p>
<a href="http://www.research.att.com/~north/graphviz/download.html">Graphviz</a> is an open source package with special abilities in drawing directed (via dot) and undirected (via neato) graphs.
The focus is on <a href="http://www.research.att.com/sw/tools/graphviz/GI94.pdf">Graph Visualization</a>.
<a href="http://www.dkbza.org/pydot.html">pydot</a> provides a Python interface to dot.
<br />
<a href="http://www.yworks.com/en/products_yed_about.html">yED</a> is a
"powerful graph editor that is written entirely in the Java programming language. It can be used to quickly and effectively generate drawings and to apply automatic layouts to a range of different diagrams and networks."
</p>


<p>
<a href="http://www.13thmonkey.org/">Artdraw</a> may prove promising:
it is a PostScript-like syntax that adds alpha blending.
</p>

<p>
If you are considering PostScript graphics on the way to PDF documents,
is worth noting that <a href="#reportlab">ReportLab</a> allows direct creation of PDF graphics and reports.
</p>

<h4>Data and Function Driven Graphics</h4>

<p id="gnuplot">
Before exploring other possibilities,
try <a href="http://gnuplot.sourceforge.net/">gnuplot</a>:
it meets many data driven or function driven plotting needs.
It is free and open source, multiplatform, very fast, and very powerful.
(There is a <a href="http://www.lee-phillips.org/info/Macintosh/gnuplot.html">Mac version</a>,
and here are some <a href="http://gamma.magnet.fsu.edu/install/mac/gnuplot/">instructions for installing under OSX</a>.)
You can download <a href="http://www.gnuplot.info/">official release</a>.
New users may profit from <a href="http://www.menet.umn.edu/~langlais/UMN/gnuplot-shortcourse/gnuplot.pdf">Langlais's "short course"</a>
or
the <a href="http://www-128.ibm.com/developerworks/library/l-gnuplot/">IBM tutorial</a>.
<br />
Features: In addition to plotting 2-D and 3-D graphs of arbitrary functions,
gnuplot can also quickly plot large data sets.
It has a powerful yet intuitive scripting language.
GNUPLOT can provide output in many different formats,
including the LaTeX picture environment and <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
The LaTeX and epslatex output "terminals" allow for math symbols etc.
(After LaTeXing the resulting .tex file, the .dvi file can be converted to PostScript using dvips -o.
The Ghostview previewer can then be used to convert the PostScript file,
fonts and all,
to <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.)
All told this is quite a powerful plotting tool with extremely flexible output.
New users should read <a href="http://www.cs.uni.edu/Help/gnuplot/">Introduction to GnuPlot</a>,
but skip the institution specific material on starting gnuplot and head straight for the "Simple Example".
See the <a href="#gnuplot-hints">gnuplot hints</a> below.
</p>


<ul>
<li>
For basic data driven or function driven graphics,
it is possible to use a <a href="#spreadsheets">spread sheet</a>.
</li>
<li>
For complex data driven graphics,
you may want to try <a href="#pyplot">plotting in Python</a>.
</li>
<li>
<a href="http://plasma-gate.weizmann.ac.il/Grace/">Grace</a> is a free, cross-platfrom plotting program that has a GUI orientation and produces output in many formats,
including <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
</li>
<li>
<a href="http://ploticus.sourceforge.net/">ploticus</a> produces a variety of graph types in common formats,
including <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
Be sure to see the <a href="http://ploticus.sourceforge.net/doc/prefab_draw.html">draw</a> prefab for handling of ploticus scripts.
</li>
<li>
<a href="http://scigraphica.sourceforge.net/">SciGraphica</a> is good for data analysis and technical graphics.
The interface resembles that of OriginLab's "Origin".
It supports 2D, 3D and polar charts.
It is free and open-source, released under the GPL license.
</li>
<li>
<a href="http://ptolemy.eecs.berkeley.edu/java/ptplot/">Ptplot</a> is a 2D data plotter and histogram tool implemented in Java. 
</li>
<li>
<a href="http://www.cohort.com/coplot.html">CoPlot</a> is a high quality commerical scientific plotting package,
implemented in Java.
</li>
</ul>

<div>
One other recent possibility deserves mention: <a href="http://code.google.com/apis/chart/">Google Chart</a>.
Chart construction becomes a simple matter of URL construction.
IBM offers nice <a href="http://www.ibm.com/developerworks/web/library/wa-pz-googlecharts/">examples of use</a>.
Chart construction can be simplified by scripting (e.g., in <a href="http://pygooglechart.slowchop.com/">Python</a> or <a href="http://googlecharts.rubyforge.org/">in Ruby</a>).
</div>

<h4>Vector Graphics</h4>

<p>
See <a href="http://www.maa.org/editorial/mathgames/mathgames_08_01_05.html">Ed Pegg's page</a>
for a more extensive discussion.
</p>

<ul>
<li id="TpX">
Python based <a href="http://tpx.sourceforge.net/">TpX</a> is small, fast, and powerful.
Output formats include EPS, PDF, and PGF.
(LaTeX users will particularly be interested in the PGF output.)
Try it!
(License: GPL; Language: Delphi)
</li>
<li>
<a href="http://ipe.compgeom.org/">IPE</a> is a powerful cross-platform graphics editor with strengths related to computational geometry and in LaTeX support.
It can save figures as EPS, PDF, or XML, and it supports conversion to many other formats.
It can produce multi-page PDF figures that can be imported a page at a time into a LaTeX document (e.g., by using the 'page' option of the graphicx package).
</li>
<li id="Inkscape">
<a href="http://inkscape.org/">Inkscape</a> is an open source <acronym class="help" title="Scalable Vector Graphics">SVG</acronym> editor.
There are <a href="http://www.inkscape.org/download.php">Windows test builds</a>.
Can export to EPS and EMF.
</li>
<li>
<a href="http://www.skencil.org/">Skencil</a>
is a vector drawing program written almost entirely in <a href="#python">Python</a>.
The related but apparently more active <a href="http://sk1project.org/">sk1project</a> offers
a serious vector graphic package for Linux users. (License: GPL and LGPL)
</li>
<li>
<a href="http://www.omnigroup.com/applications/omnigraphsketcher">OmniGraph Sketcher</a> is a very reasonably priced
commercial program that allows very fast drawing of nice looking economics-related graphs.
</li>
<li>
<a href="http://www.ribbonsoft.com/qcad.html">QCad</a> is a FOSS computer aided drafting package that emphasizes ease of use.
</li>
<li>
<a href="http://www.cgal.org/">The Computational Geometry Algorithms Library (CGAL)</a>
provides geometric algorithms in a C++ library.
(License: LGPL for the core library, but see the <a href="http://www.cgal.org/license.html">licensing details</a>.)
</li>
<li>
<a href="http://tams-www.informatik.uni-hamburg.de/applets/jfig/">JFig</a> (a Java port of Xfig) is a cross platform implementation.
There is also the classic <a href="http://www.xfig.org/">Xfig</a> for X Windows.
<a href="http://www.schmidt-web-berlin.de/winfig/">WinFIG</a> for MS Windows can read Xfig files. (License: Shareware)
</li>
<li> 
For Windows users, WinPlot and Wingeom are free drawing programs.
(License: unknown; not open source.)
<a href="http://math.exeter.edu/rparris/winplot.html">WinPlot</a>,
is a free mathematical package for plotting in two or three dimensions.
(There is a <a href="http://faculty.matcmadison.edu/alehnen/winptut/winpltut.htm">tutorial</a>.)
For precise geometric drawings there is also <a href="http://math.exeter.edu/rparris/wingeom.html">Wingeom</a>.
</li>
<li>
<a href="http://live.gnome.org/Dia">Dia</a> is a powerful diagramming software that saves as XML and exports <acronym class="help" title="Scalable Vector Graphics">SVG</acronym> and <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
There is a <a href="http://dia-installer.sourceforge.net">Windows installer</a>.
(If you are interested in Dia's UML capabilities,
you might also like to look at <a href="http://www.umlet.com">UMLet</a> or <a href="http://uml.sourceforge.net">Umbrello</a>.)
</li>
<li>
<a href="http://sodipodi.sourceforge.net/">Sodipodi</a> is a still young but promising open source vector drawing program.
</li>
<li>
<a href="http://www.ivtools.org/ivtools/index.html">IV Tools</a> is very useful in a Unix environment.
</li>
<li><a href="http://tug.ctan.org/tex-archive/graphics/dratex/">DraTeX</a>
</li>
<li>
<a href="http://www.mayura.com/">Mayura Draw</a> is a shareware vector drawing program for Windows.
</li>
<li>
<a href="http://openfx.org/">OpenFX</a> is an Open Source platform for 3D modeling and rendering.
</li>
<li>Visit the <a href="http://www.geom.umn.edu/">Geometry Center</a>.
</li>
<li>
Finally, just for fun, I have to mention 
<a href="http://www.johuco.com/snail/snail.html">Snail Graphics</a>,
the free children's drawing package.
It is written for Microsoft Quick Basic but should work with other implementations of Basic,
e.g., the free <a href="http://www.rahul.net/rhn/cbas.page.html"> Chipmunk Basic</a>.
If you are running Windows but cannot find qbasic.exe,
Microsoft's <a href="http://www.microsoft.com/PERMISSION/copyrgt/cop-soft.htm#QB">
official policy</a> says you are entitled to  
Quick Basic 1.1 as part of its operating systems. 
You can 
<a href="http://download.microsoft.com/download/win95upg/tool_s/1.0/W95/EN-US/olddos.exe">
download</a> it directly from Microsoft as a self-extracting executable 
(836k) with a bunch of other stuff.
Copy the files <tt>qbasic.exe</tt> and <tt>qbasic.hlp</tt> to whatever directory 
you have copied the snail graphics files to (e.g. <tt>C:\snail</tt>).
</li>
</ul>

<h4>Flow Charts</h4>

<ul>
<li>
<a href="#dia">Dia</a>
</li>
<li>
<a href="http://search.cpan.org/search?module=Graph::Flowchart">Graph::Flowchart</a> (langague: perl)
</li>
<li>
<a href="http://talljosh.googlepages.com/flowchartpython">Flowchart Python</a>
(visual programming for Python)
</li>
<li>
<a href="http://ftp.ktug.or.kr/tex-archive/help/Catalogue/entries/flow.html">flow</a>
draws flowcharts based on a simple text description. (License: GPL; Language: C)
</li>
<li>
<a href="http://www.edutoolresearch.com/IconicProgrammerApplet.html">iconic programming applet</a>
</li>
</ul>

<h4>Image Manipulation</h4>
<ul>
<li id="gimp">
  The <a href="http://www.gimp.org">GNU Image Manipulation Program (GIMP)</a> is very popular and cross-platform.
  (License GPL)
  If you want a GUI-based FOSS image editor,
  this is almost surely what you want.
  For most users, it is competitive with Photoshop (TM).
  GIMP is suitable for photo retouching, image composition and image authoring.
  It includes animation capabilities (including MNG).
  It can even be scripted with Python.
</li>
<li id="xv">
<a href="http://www.trilon.com/xv/downloads.html">XV</a> "is an interactive image manipulation program for the X Window System".
It was once very popular;
it still has a dedicated core of users.
</li>
<li>
  There are a variety of limited but useful online photo editors, many gratis.
</li>
</ul>

<p>
Scripted Image Manipulation with Python
</p>

<ul>
<li>
<a href="http://scikit-image.org/">scikit-image</a> provides scientific image processing.
(License: BSD)
For details, see the article <a href="https://peerj.com/articles/453/#peerj-453-fn9">scikit-image: image processing in Python</a>.
</li>
<li>
<a href="https://python-pillow.github.io/">Pillow</a> provides basic image processes.
(License: resembles the MIT license.)
</li>
</ul>


<h3 id="sparkplot">Sparklines</h3>

<p>
Edward Tufte offers an online <a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR">discussion of sparklines</a>.
</p>

<p>
<a href="http://agile.unisonis.com/proj/sparkplot/sparkplot.py">sparkplot.py</a> creates sparkplots using Python and Matplotlib.
</p>

<div>
Here is a cool sparkline application:
<a href="http://bitworking.org/news/Sparklines_in_data_URIs_in_Python">Sparklines in data: URIs</a>.
Here is Joe Gregorio's a code sample implementing the idea in Python.
<pre><code>
import Image, ImageDraw
import StringIO
import urllib

def plot_sparkline(results):
   """Returns a sparkline image as a data: URI.
       The source data is a list of values between
       0 and 100. Values greater than 95
       are displayed in red, otherwise they are displayed
       in green"""
   im = Image.new("RGB", (len(results)*2, 15), 'white')
   draw = ImageDraw.Draw(im)
   for (r, i) in zip(results, range(0, len(results)*2, 2)):
       color = (r > 50) and "red" or "gray"
       draw.line((i, im.size[1]-r/10-4, i, (im.size[1]-r/10)), fill=color)
   del draw

   f = StringIO.StringIO()
   im.save(f, "PNG")
   return 'data:image/png,' + urllib.quote(f.getvalue())

if __name__ == "__main__":
    import random
    html = """
    &lt;html&gt;
        &lt;body&gt;
            &lt;p&gt;Does my sparkline 
                &lt;img src="%s"&gt; 
            fit in a nice paragraph of text?
            &lt;/p&gt;
        &lt;/body&gt;
    &lt;/html&gt;"""
    print html % plot_sparkline([random.randint(0, 100) for i in range(30)])
</code></pre>
</div>

<h3 id="latexgraphics">Graphics for LaTeX</h3>

<p>
If you produce documents in LaTeX, you would naturally
like the fonts and equations in your graphics to match
those in your text.
There are a variety of solutions.
</p>

<div>
The simplest answer is probably to use gnuplot.
See <a href="http://www.fnal.gov/docs/products/gnuplot/tutorial/">http://www.fnal.gov/docs/products/gnuplot/tutorial/</a> for a good discussion.
</div>

<div id="tikz">
See the <a href="#tikz-hints">TikZ hints</a>.
<br />
If your figures are simple (or if you are patient),
just use the very powerful TikZ drawing language directly in your LaTeX document.
TikZ does <em>not</em> depend on PostScript,
you can use it directly with pdflatex.
Conveniently, it is <em>also</em> compatible with the dvips/ps2pdf route.
Sean Farley offers an <a href="http://siam.lsu.edu/wp-content/uploads/2009/12/tikz.pdf">useful tutorial</a>.
<br />
There are many TikZ libraries available,
including <a href="http://sourceforge.net/projects/pgfplots/">pfgplots</a> for drawing plots
and <a href="http://altermundus.com/pages/downloads/index.html">tkz-graph</a> for drawing graphs.
These can greatly simplify your drawing tasks.
<br />
<a href="#gnuplot">gnuplot</a> since version 4.4 has a <a href="http://peter.affenbande.org/gnuplot/">TikZ “terminal”</a>. Very nice!
<br />
<a href="http://code.google.com/p/tikzedt/">TikzEdt</a> (License: GPL3) and
<a href="http://www.hackenberger.at/blog/ktikz-editor-for-the-tikz-language">KtikZ</a> can nicely help
you create tikz figures.
(Mykel Kochenderfer has compiled a <a href="http://mykel.kochenderfer.com/tikz/">KtikZ Windows binary</a>.)
Related functionality is provided by <a href="https://github.com/jeroenjanssens/tikz2pdf">tikz2pdf</a>.  (License: BSD)
<br />
If your figures are complex but drawable by hand,
you can create them with the <a href="#TpX">TpX</a> drawing application,
which can output tikz code.
(You can set the default output format to tikz <em>before</em> you start your drawing,
or you can change the format in the picture properties.)
</div>

<p>
For great results even in complex drawings,
try the <a href="#pyx">PyX</a> graphics package for Python.
This will require an initial investment of experimentation and learning,
but the results (as EPS or PDF) are fabulous.
</p>

<p>
Some solutions require the use of PostScript.
</p>
<ul>
<li>
<a href="http://plan9.bell-labs.com/who/hobby/MetaPost.html">MetaPost</a>
</li>
<li>
You can put fragments in your EPS graphics and replace them
with \psfrag.  E.g.,
<pre>
\begin{figure}
\psfrag{sintheta}{$\sin(\theta_k)$}
\includegraphics[width=5cm]{myfig.eps}
\end{figure}
</pre> 
</li>
<li>
<a href="http://www.nongnu.org/skencil/">Skencil</a> with the
<a href="http://home.comcast.net/~jbiddier/sklatex/">skLaTeX</a> plugin.
</li>
</ul>

<p>
Often you will want to produce your graphics as <acronym class="help" title="Encapsulated PostScript">EPS</acronym> files,
which can be included in a LaTeX document.
However there are several alternatives.
</p>
<ul>
<li>Produce EPS graphics for LaTeX inclusion.
      <ul>
      <li>
      Draw it in PostScript.  
      This is easier than you might believe.
      (See <a href="#postscript">above</a>.)
      </li>
      <li>
      Use a <a href="#psmeta">metalanguage for PostScript</a>.
      </li>
      <li>
      Use a <a href="#drawapps">drawing application</a> that supports <acronym class="help" title="Encapsulated PostScript">EPS</acronym>.
      </li>
      </ul>
</li>

<li id="pgf">
        <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html">PGF (Portable Graphics Format)</a>
(PGF will feel like a subset of PSTricks that can be used for <em>both</em> PostScript and PDF generation!)
The PGF based <a href="http://www.ctan.org/tex-archive/help/Catalogue/entries/pgfplots.html">pgfplots</a> package
simplifies chart creation.
</li>
<li>
  <a href="http://tug.ctan.org/tex-archive/graphics/pstricks/">pstricks</a>
  is truly wonderful and powerful.
  It gives you easy access to the power of PostScript from within your LaTeX documents.
  There is a <a href="http://www.tn-home.de/Tobias/Soft/TeX/TUG040611/presentation.pdf">simple tutorial</a>
  and a helpful <a href="http://tug.org/mailman/listinfo/pstricks">discussion list</a>.
</li>
<li>
  <a href="http://jpicedt.sourceforge.net/">jPicEdt</a> is a Java application that can export to the LaTeX picture environment.
  It supports the eepic and PsTricks packages and is developing support for TikZ.
</li>
<li>
  <a href="http://mathcs.holycross.edu/~ahwang/current/ePiX.html">ePiX</a> is a C++ drawing package that outputs eepic pictures.
</li>
<li>
  <a href="http://tug.ctan.org/tex-archive/graphics/metapost/">MetaPost</a>
  is incredibly powerful way to produce PostScript graphics but it requires an investment to learn.
  (You should first find out whether <a href="#tikz">TikZ</a> meets your needs.)
  Start with <a href="http://www.tug.org/pracjourn/2006-4/henderson/">A Beginner's Guide to METAPOST for Creating High-Quality Graphics</a>.
  See <a href="http://cm.bell-labs.com/who/hobby/mppubs.html">some helpful documentation</a>.
  <a href="http://w3.mecanica.upm.es/metapost/metagraf.php">Metagraph</a> provides an intuitive GUI interface to MetaPost.
</li>
</ul>

<div>
Sometimes you may want to include Encapsulated PostScript (<acronym class="help" title="Encapsulated PostScript">EPS</acronym>) files in LaTeX documents.
This will probably take you two steps:
i. tell LaTeX that you will be including a graphic,
and ii. convert your <tt>.dvi</tt> file, in which you may not be able to view the graphic, into a PostScript or <acronym class="help" title="Portable Document Format">PDF</acronym> file, in which you can view the graphic.
(The second step assumes your <tt>.dvi</tt> viewer does not include a PostScript filter, but some do.)
The best way to accomplish the first step is to use the <tt>\includegraphics</tt> command of the <tt>graphicx</tt> package, probably with the <tt>dvips</tt> option.
So in the preamble of your LaTeX document you will have
<br />
<code>\usepackage[dvips]{graphicx}</code>
<br />
and then in the body of the document you will have something like
<br />
<code>
\begin{figure}[htb]
<br />
\begin{center}
<br />
\includegraphics[width=\textwidth]{mygraphic.eps}
<br />
\end{center}
<br />
\end{figure}
</code>
<br />
The best way to accomplish the second step is with <tt>dvips</tt> for PostScript output or <tt>dvipdfm</tt> for <acronym class="help" title="Portable Document Format">PDF</acronym> output.
<br />
Comment: if you use a .dvi viewer that can display your included PostScript files (e.g., TrueTeX or yap with GhostScript), you will probably find it saves time not to view them every time you view the document. Just use the <tt>dvips</tt> option for the <tt>graphicx</tt> package so that the PostScript just gets passed through. Then remove that option when you want to see everything.
<br />]
Comment: According to Robin Fairbairns:
The packages graphics, graphicx and epsfig were all released in their
present form at the same time (summer 1994).  epsfig is capable of
generating some confusion because a package of the same name existed before
that time (it was written as a joint replacement for the
long-established, and somewhat buggy, epsf and psfig packages); the
old epsfig doesn't have the characteristics we have come to rely on.

The graphics package forms the basic kernel of the whole bundle: it
converts graphics primitive commands into \special commands[*] for the
device drivers that the bundle supports.

The graphicx package adds a user interface, and makes possible the
merging of commands (like scale and rotate: which in graphics need to
be composed, and hence produce a longer sequence of commands both at
the TeX level and potentially also at the driver level).

To first order, the epsfig package simply provides a different user
interface, which it translates into graphicx-like commands.

There _are_ trade-offs.  graphics' user interface is very
"traditional tex", with little sophistication.  graphicx and epsfig
use a key-value syntax which is noticeably more difficult (and hence
cpu-intensive) for the packages to decode.

graphicx is middle of the road as far as decoding
complexity goes, but has useful extra power in its graphical
expressiveness by comparison with graphics.
(Also, if you never learned psfig, epsfig's psfig-like syntax won't excite you much.)
<br />
[*] or, in the case of pdftex, into pdftex commands for the job.
</div>

<div>
If you want your EPS files to be truly portable, you need to embed the fonts.
If you use a drawing application, make sure it is configured to embed the fonts.
If you convert your .dvi files to PS,
you can tell dvips to embed all fonts with the -Pdownload35 option
<br />dvips -t letter -Pdownload35 file.dvi -o file.ps
<br />
If you are producing PDF files, you can use
<a href="http://www.linuxcommand.org/man_pages/pdffonts1.html">pdffonts</a>
to check for font embedding.
If using ps2pdf  you can use the option <code>-dEmbedAllFonts=true</code>.
See <a href="http://multimedia.polito.it/masala/pub_font_embedding_pdf_linux.html">this document</a>
for more discussion.
</div>

<div>
<!-- http://lists.gnu.org/archive/html/adonthell-devel/2002-09/msg00006.html -->
Users of PostScript and pdflatex face an annoyance:
pdflatex does not directly support the inclusion of EPS files.
However, according to Kai Stirker, one can include EPS files in pdflatex files as follows.
<ul>
<li>
In your header put: <code>\usepackage[pdftex]{graphicx}\usepackage{epstopdf}</code>.
</li>
<li>
Run pdflatex with the <code>--shell-escape</code> command line switch.
</li>
</ul>
Note that you will need to have installed <a href="http://www.ctan.org/tex-archive/macros/latex/contrib/supported/oberdiek/epstopdf.sty">epstopdf</a>,
which you get when you install GhostScript.
Then just <code>\includegraphics{filename.eps}</code> as usual to include your EPS graphic,
and pdflatex will conver them to pdf format on the fly.
(Be sure to return the extension! Otherwise you will get conversion the first time,
and use of the old PDF after that.)
</div>

<p>
You can use <a href="http://www.ecademix.com/JohannesHofmann/flpsed.html">flpsed</a> to add editable annotations to a PostScript document. (License: GPL; Platform: X11.)
</p>

<div>
Other interesting solutions:
<ul>
<li>
<a href="http://www.freewebs.com/gervacio/">GraphTeX</a>
</li>
</ul>
</div>



<h2 id="MISC">Other Useful Software and Sites</h2>

<ul class="menu">
<li>
<a href="#security">Security</a> 
</li>
<li>
<a href="#keyboard">Keyboards</a> 
</li>
<li>
<a href="#calculators">Calculators</a> 
</li>
<li>
<li>
<a href="#remote">Remote Access</a>
<li>
<a href="#pims">
Personal Information Managers (PIMs)</a>
</li>
<li>
<a href="#addressbooks">
Address Books</a>
</li>
<li> <!--  moved to utilities -->
<a href="#graphics">Graphics</a> 
</li>
</ul>
<ul class="menu">
<li>
<a href="#office">Office Suites and Related Software</a> 
</li>
<li>
<a href="#preprocess">Text Preprocessors</a>
</li>
<li>
<a href="#OS">Operating Systems</a>
</li>
</ul>
<ul class="menu">
<li>
Software for <a href="#openaccess">open access</a> journals and publications.
</li>
<li>
<a href="#kids">Stuff for Kids (and Educators)</a>
</li>
</ul>

<h3 id="security">Security</h3>

<p>
Laptop (and cell phone) theft is a constant problem.
The <a href="http://preyproject.com/">Prey Project</a> offers a multiplatform, FOSS theft recovery tool.
It uses Google geo location and a web camera if available,
and is available for the Android operating system.
(A related commercial product is <a href="http://www.orbicule.com/undercover/">Undercover</a> by Orbicule,
which has additional functionality and is very user friendly.)
Here are some other possible steps to take.
You can run <a href="http://en.wikipedia.org/wiki/Autossh">autossh</a> as a service that creates a link between your home router and laptop. Then whenever your laptop has internet, you can ssh into it from home.
You can also install a <a href="http://www.keylogger.org/">keylogger</a>
and schedule (e.g., with <a href="http://developer.apple.com/macosx/launchd.html">launchd</a> or cron)
to say sftp the log every day and then restart the log file.
(Personally I would only use open source keyloggers,
such as <a href="http://sourceforge.net/apps/mediawiki/pykeylogger">PyKeylogger</a>,
but these tend to be less focused on hiding themselves.)
Probably better than any of this is vigilant use of a laptop cable lock.
</p>

<h3>GIS</h3>

<p>
<a href="http://www.qgis.org/">Quantum GIS</a> is an extensible geographic information system. (License: GPL)
</p>

<h3 id="openaccess">Open Access</h3>

<p>
<a href="http://www.soros.org/openaccess/oajguides/html/business_planning.htm">
Planning an open access journal</a> (business models, tips, etc.).
Software to create and manage online open access repositories for articles:
<a href="http://software.eprints.org">Eprints </a> (from Southampton University, perl);
<a href="http://www.dspace.org">DSpace </a> (from MIT, java); 
<a href="http://cdsware.cern.ch">CDSWare </a> (from CERN, python); 
<a href="http://www.fedora.info">FEDORA </a> (from Cornell and U. of Virginia, java).
Also:
<a href="http://www.copernicus.org/COPERNICUS/publications/copernicus_strategies.html">
Copernicus</a> is a company specializing in the publication of open access journals.  
</p>

<h3>Fun, Useful, and Open Hardware</h3>

<p>
<a href="http://www.raspberrypi.org/">RaspberryPi</a>
now has an official
<a href="http://store.raspberrypi.com/projects/casmanual">manual</a>,
which includes introductions to programming languages (including Python and Java).
</p>

<h4 id="keyboard">Keyboards</h4>
<p>
Windows keyboards are a painful design for touch typists.
Consider <a href="http://shop.store.yahoo.com/pfuca-store/haphackeylit1.html">Happy Hacker Lite II</a>,
which unfortunately is a bit pricey.
Short of that, at least remap the prominent caps-lock key to something useful:
[<a href="http://www.annoyances.org/exec/show/article02-022">1</a> | <a href="http://www.sysinternals.com/ntw2k/source/ctrl2cap.shtml">2</a> ]
</p>

<h3 id="ttype">Touch Typing</h3>
<p>
Touch typing will speed your writing and programming immensely.
I know of two free cross-platform solutions.
<a href="http://tuxtype.sourceforge.net/">Tux Typing</a> is targeted to kids but is generally useful.
Vim users can use the <a href="http://vim.sourceforge.net/script.php?script_id=461">TTCoach script</a>.
</p>

<h3 id="pim">Personal Information Managers (PIMs)</h3>

<p>
Cross-platform PIMs <a href="http://chandlerproject.org/">Chandler</a>,
which is very promising. (License: Apache. Language: Python.)
Also look at <a href="http://www.thekompany.com/projects/aethera/">Aethera</a>.
In the meantime, the <a href="http://www.palm.com/support/downloads/palmdt_4.html">Palm Desktop</a> is free,
available on Windows and Mac,
and quite functional
(although it does not use the iCalendar standard).
</p>

<p>
<a href="http://www.citadel.org/">Citadel</a> is a promising groupware application.
</p>

<h4 id="calendars">Calendars</h4>

<p>
There are lots of good calendars out there.
But if you are "always connected"
I have not been able to beat Google Calendar.
(I have not tried to use it offline.)
Note that you can <a href="http://www.downloadsquad.com/2008/01/14/google-calendar-now-available-on-your-firefox-sidebar/">add Google Calendar to your FireFox sidebar</a>.
Comment: if you ever see a corrupted screen when viewing Google Calendar,
try clearing your browser's cache and cookies.
</p>

<p>
Generally it seems a good idea that your calendar support the 
<a href="http://www.ietf.org/rfc/rfc2445.txt">iCalendar standard</a>.
(This means you can easily move it between applications and across platforms.)
It also means you can easily write scripts that interact with your calendar.
For example,
you can use the <a href="http://codespeak.net/icalendar/">iCalendar</a>.
(License: LGPL; Language: Python.)
An alternative is the <a href="http://www.nongnu.org/python-pdi/">Python-PDI</a> library for personal data interchange,
which also handles the vCard format.
(License: GPL;  Language: Python.)
Aside:
<a href="http://gcaldaemon.sourceforge.net/index.html">GCALDaemon</a> offers synchronization between Google Calendar and iCalendar compatible calendar applications. (Language: Java; license: APACHE version 2.0)
(Gina Trapani offers some <a href="http://lifehacker.com/software/google-calendar/geek-to-live--sync-google-calendar-and-gmail-contacts-to-your-desktop-251279.php">installation hints</a>.)
</p>

<p>
I like <a href="http://www.mozilla.org/projects/calendar/sunbird.html">Sunbird</a> a lot
(it is the <a href="http://www.mozilla.org/">Mozilla</a> offering).
Going under the name of <a href="http://wiki.mozilla.org/Calendar%3ALightning">Lightening</a> is a calendar extension for Thunderbird that shares the Sunbird code base.
For an interesting and "light" calendar, you can try <a href="http://freshmeat.net/projects/remind/">Remind</a>.
(Linux Journal has a <a href="http://www.linuxjournal.com/article/3529">review</a>.)
</p>


<h4 id="addressbooks">Address Books</h4>

<p>
The address book situation is a scandal.
Applications have not settled on a standard for data sharing
and do not even adequately document their own formats.
The best documented formats,
<a href="https://wiki.mozilla.org/Examples_of_various_Address_Book_formats">VCARD and LDIF</a>,
are not great.
For such a widespread need, this is a rather astonishing situation.
</p>

<p>
Thunderbird comes with a pretty good address book tool.
Unfortunately,
it saves address books in Mork (.mab) format,
and if you back these up it cannot import them!
Fortunately, there is a
<a href="http://tarvid.kallimagarden.com/mork/index-parser.html">Mork parser library</a>
(Language: Python)
Thunderbird 3 was supposed to replace the horrible Mork format
with <a href="http://en.wikipedia.org/wiki/MozStorage">MozStorage</a>,
thereby adopting the storage format now used in FireFox.
But the <a href="http://kb.mozillazine.org/Moving_address_books_between_profiles">current situation</a> is still bad.
However, there is an <a href="https://freeshell.de//~kaosmos/morecols-en.html">address book extension</a> that improves things.
</p>

<p>
Most PIMs include address book functionality.
Most email clients do as well.
You can also get such (database) functionality in stand-alone applications.
On Linux you can use <a href="http://membres.lycos.fr/fpeters/gaby/">Gaby</a> or <a href="http://pbrufal.kleenux.org/gtk-agenda.shtml">GTK-Agenda</a>.
There is also the <a href="http://www.aq.org/~js/agenda/pim-apps/contacts.html">Contacts</a> application.
</p>

<h4>Project Management</h4>

<p>
See <a href="http://en.wikipedia.org/wiki/Comparison_of_project_management_software">Wikipedia</a>
for a comparison of project management software.
Here is <a href="http://mastersinprojectmanagement.org/top-25-open-source-project-management-apps.html">another comparison</a>.
</p>

<p>
Here is one that is not yet listed there:
<a href="http://www.projelead.com/">ProjeLead</a>
(License: GPL)
Probably <a href="http://trac.edgewall.org/">Trac</a> is best known in the open source community.
</p>

<h3 id="pfm">Personal Financial Managers (PFMs)</h3>

<ul>
<li>
<a href="http://pycheckbook.sourceforge.net/">PyCheckbook</a>
is a simple personal finance manager that will run on any platform that can run Python and wxPython.
</li>
<li>
<a href="http://home.gna.org/cbb/">CBB</a> is written in Tcl/Tk and Perl, so it is highly OS-independent.
Track accounts and create reports.
</li>
<li>
<a href="http://www.gnucash.org/">GnuCash</a> for Un*x, including OSX, but not Windows.
There is now a <a href="http://sourceforge.net/project/showfiles.php?group_id=192&package_id=202">Windows binary</a>!
There are <a href="http://wiki.gnucash.org/wiki/Python_Bindings">Python bindings</a>.
</li>
<li>
<a href="http://www.thekompany.com/products/kapital/">Kapital</a> for Linux.
</li>
<li>
<a href="http://www.moneydance.com/">MoneyDance</a> is a commercial cross-platform (JAVA) solution.
</li>
<li>
<a href="http://www.divifund.com/">Divifund</a> is a cross platform personal finance manager.
(Includes exportAbiWord.py, which can export tables to <a href="#abiword">AbiWord</a>.
</li>
</ul>

<h4>Open Financial Exchange</h4>

<p>
<a href="http://www.ofx.net/">Open Financial Exchange (OFX)</a>
"is a unified specification for the electronic exchange of financial data".
The format is an <a href="http://www.ofx.net/DeveloperSolutions.aspx">open standard</a>.
It is possible to convert <a href="http://wiki.github.com/mulicheng/csv2ofx/">CSV to OFX</a>.
</p>


<h2 id="office">Office Suites and Related Software</h2>

<p>
Advice on office suites: do not use them.
Word processors slow down your writing: use a good <a href="#EDITORS">text editor</a>.
Spreadsheets are a risky way to handle data
[<a href="http://www.burns-stat.com/pages/Tutor/spreadsheet_addiction.html">1</a>
|<a href="http://www.it-director.com/dl/free/spreadsheet.pdf">2</a>]:
use a simple matrix programming language instead.
The virtues of existing presentation packages do not outweigh their weaknesses,
especially if you need to present mathematical formulae.
</p>
<p id="officesuites">
Now, since you are going to use them anyway, what should you use?
Here are some basic considerations.
Whom do you need to exchange files with?
Do you use more than the basic functionality of word processors and spreadsheets?
Do you want a multi-platform solution?
Since everyone should choose a multi-platform solution
and few people use more than the basic functionality of their office suites,
I recommend <a href="http://www.openoffice.org/">OpenOffice</a>,
perhaps as part of the collection of applications on <a href="http://theopencd.sunsite.dk/programs/">TheOpenCD</a>,
or the closely related <a href="https://www.libreoffice.org/">LibreOffice</a>.
Of course most of the people you know will be using a commercial office suite,
but you will be able to save your files in formats they can read,
and as long as they are not using advanced features 
(e.g., templates, complex macros, or complex spreadsheet formulae)
you will be able to open their files as well.
Most users do not use such features.
</p>

<p>
Since office suites are often expensive, I will mention a few relatively cheap commercial alterntives.
<br />
<a href="http://www.sun.com/software/staroffice/">Star Office</a>
is essentially the commercial sibling to OpenOffice,
and it also supports the Open Document Format (as any good office suite should).
<br />
<a href="http://www.corel.com/">Corel WordPerfect Office</a>
<br />
<a href="http://www.softmaker.com/english/">Soft.Maker</a> is a cross-platform commercial suite.
<br />
<a href="http://www.software602.com/">602PC Suite</a> is a MS compatible office suite.
<br />
Nowadays you can also consider online office suites.
The free <a href="www.thinkfree.com">ThinkFree</a> is a popular option.
</p>

<h3>Document Exchange</h3>

<p>
There are two primary reasons to provide people with documents:
you want them simply to view them,
or you want them also to modify them.
Word processor formats are seldom a good choice in either case,
although the versioning capabilities of modern word processors can be very useful in a collaborative setting.
Plain text can often satisfy both needs.
When more structure is needed,
HTML will usually suffice.
When formatting must be tightly controlled or access needs to be controlled,
PDF is often a good choice.
A relatively new, lighter-weight (and therefore web-suitable) substitute for PDF is <a href="http://www.djvuzone.org/">DjVu</a>
(for which you will want to visit <a href="http://djvu.sourceforge.net/">DjVu on sourceforge</a> or <a href="http://www.lizardtech.com/">Lizard Tech</a>).
<a href="http://unipage.org/">Unipage</a> allows storing complete web pages in a single file.
</p>


<h3 id="wordprocessors">Word Processors</h3>

<div id="abiword">
<a href="http://www.abisource.com">AbiWord</a> is a cross-platform,
full-featured word processor with a Word&reg;-like interface.
If you want a quick viewer for MS <tt>.doc</tt> files (e.g., for your email),
this loads much faster than most alternatives.
It also has a wonderful equation editor,
which accepts <a href="#TEX">LaTeX</a> input in a dialogue box.
</div>

<p>
If you want even lighter weight than the very nice AbiWord,
on Linux you can try <a href="http://www.nllgg.nl/Ted/">Ted</a>.
Some Linux users like frames-oriented <a href="http://www.koffice.org/kword/">KWord</a>.
</p>

<p>
Nowadays it is perfectly feasible to use a decent HTML editor as your word processor.
The <a href="http://www.w3.org/Amaya/">Amaya browser/authoring tool</a> may be worth considering,
although I have found it a bit slow and clunky.
(Somewhat offsetting this is its native MathML support.)
Another possibility is the web development suite offered free by <a href="http://www.evrsoft.com/download/">Evrsoft</a>.
</p>



<p>
If you are comfortable with markup,
you can easily replace your word processor and get great added functionality.
Try  <a href="ftp://ftp.adfa.edu.au/pub/postscript/qsdir/Qs_README.html">QuickScript</a>.
Another alternative:
<a href="http://www.cappella.demon.co.uk/tinyfiles/tinymenu.html">Tinydict</a>.
</p>

<h4>Cloud</h4>

<p>
It is now perfectly possible to rely on internet applications for word processing.
I have had good experiences with <a href="http://docs.google.com">Google Docs</a> for basic word processing tasks
and online collaboration.
<a href="http://writer.zoho.com">Zoho Writer</a> looks even more capable,
and has good math support as well.
(Including the ability to produce math by inputting LaTeX.)
</p>

<h4 id="bibmanage">Bibliography Management</h4>

<p>
You will need to decide what format to keep your bibliography in,
and what software to use to manage it.</p>

<p>
Citation Management:
<br />
If you use a commercial word processor you will probably use the commercial EndNote
to manage your reference and format your citations.
However there are some interesting alternatives.
In particular,
LaTeX users have the traditional (and very powerful) <a href="http://www.ctan.org/tex-archive/biblio/bibtex/">BibTeX</a> to manage the citations in their documents.
Even users of commercial word processors can take advantage of BibTeX by using <a href="http://www.ee.ic.ac.uk/hp/staff/dmb/perl/index.html">Bibtex4Word</a>.
New users should see the <a href="#bibtexhints">BibTeX user hints</a>.
Now for the design of citation reference and citation style,
they have the even more powerful <a href="http://tug.ctan.org/tex-archive/macros/latex/exptl/biblatex/">biblatex</a>
(which greatly simplifies writing new styles).
(Users switching from natbib will want to know about the natbib-compatibility-mode,
which allows use of natbib's commands (e.g., \citep, \citet)
instead of the commands usually provided by biblatex (e.g., \parencite, \textcite).)

Python users can consider the bib4txt component of <a href="http://www.pricklysoft.org/software/bibstuff.html">bibstuff</a>,
which should particularly interest <a href="#rest">reStructuredText</a> users who need bibliographic support.
(I recommend you get the <a href="http://code.google.com/p/bibstuff/">most recent BibStuff</a>.) (BibStuff License: MIT; Language: Python)
Chris Putnam's <a href="http://www.scripps.edu/~cdputnam/software/bibutils/bibutils.html">Bibutils</a>
"interconverts between various bibliography formats using a common XML intermediate."
(Bibutils License: GPL; Language: C; binaries are available for many platforms.)
</p>

<p>
Users of Open Office or MS Word can insert references directly
in their documents with <a href="http://bibus-biblio.sourceforge.net/wiki/index.php/Main_Page">Bibus</a>.
</p>

<p>
<a href="http://www.citeulike.org/">CiteULike</a> is an interesting "in the cloud" solution
for managing references.
</p>


<h5 id="bibtex">BibTeX related</h5>

<p>
<a href="#bibtex">BibTeX</a> is the traditional choice for citation management.
(See the <a href="#bibtexhints">BibTeX user hints</a>.)
An interesting alternative is <a href="http://www.cs.cornell.edu/people/egs/crosstex/faq.php">CrossTeX</a> (License: GPL; dependencies: <a href="http://www.python.org">Python</a>,
<a href="http://www.dabeaz.com/ply/">PLY</a>)
</p>

<ul>
<li>
<a href="http://pybtex.sourceforge.net/">Pybtex</a>
is a Python implementation of BibTeX.
Provides translation across formats.
(License: GPL, Language: Python)
</li>
<li>
If you need to hack a BibTeX style, you will need <a href="http://www.fz-rossendorf.de/FVTK/latex/doc/bibtex/base/btxhak.pdf">btxhak</a> or the <a href="http://www.arch.ohio-state.edu/crp/faculty/pviton/support/custom-bib.html">Custom-Bib</a> package.
</li>
<li> 
Economics relevant
<a href="http://tug.ctan.org/tex-archive/biblio/bibtex/contrib/">
BibTeX Contributions</a>.
(Note that generally you can use the .bst files with natbib.sty.
</li>
<!-- access problem -->
<li><a href="ftp://ftp.TeX.ac.UK/ctan/tex-archive/macros/plain/contrib/vertex/">
VerTeX for Economics Journals.</a> 
</li>
<li>
<a href="http://www.zotero.org/">Zotero</a> is a <em>remarkably</em> capable FireFox extension
for research resource management (including citation).
(It is worthwhile to watch the short video introduction on their <a href="http://www.zotero.org/">homepage</a> to get a feel for Zotero's capabilities.
</li>
<li>
<a href="https://help.ubuntu.com/community/JabRef">JabRef</a> is a cross-platform GUI for managing BibTeX databases
(Language: Java 1.5+. License: GPL.)
Recommended.
You can directly use the web version.
The <a href="http://jabref.sourceforge.net/documentation.php">documentation</a>
also includes very simple installation instructions.
</li>
<li>
<a href="http://www.unix-ag.uni-kl.de/~fischer/kbibtex/">kbibtex</a>
is a nice looking and functional BibTeX editor.
</li>
<li>
<a href="http://pybliographer.org/">Pybliographer</a> is a cross-platform (but not yet for Windows, unfortunately) tool for managing bibliographic databases.
It can be used for searching, editing, reformatting the following file formats: BibTeX, ISI, Medline, Ovid, Refer. 
</li>
<li>
You can use <a href="http://www.mackichan.com/BibDB/default.htm">BibTeX Database Manager (BibDB)</a> (which has a <a href="http://www.mackichan.com/techtalk/userforums.htm">mailing list</a>) to manage your citation database.
</li>
<li>
Some alternatives to BibDB:
<a href="http://www.imamod.ru/~vab/bibtexmng/">BibTeX Manager</a>
<br />
Rich Ertel's <a href="http://home.att.net/~rbertel/Bibmaker/">Bibmaker</a>
<br />
Jonas Bjornerstedt's <a href="http://www.hhs.se/personal/nejb/">BibEdit</a>
</li>
<li>
<a href="http://www.bibliographix.com/">BibliographIX</a>
is a program which serves as a literature database and reference manager.
It cooperates with MSWord and can convert to and from BibTeX.
It is a commercial product with a free "basic" version, which has some limitations.
</li>
<li>
Mac users can consider <a href="http://bibdesk.sourceforge.net/">BibDesk</a>.
</li>
</ul>



<h3 id="spreadsheets">Spreadsheets</h3>

<p>Traditional spreadsheets:
<br />
It has become very popular to use <a href="http://sunsite.univie.ac.at/Spreadsite/">spreadsheets in education</a>.
This has some downsides.
Traditional preadsheets are OK for very simple, one-off applications using small amounts of data.
For serious work,
they are too opaque, because they are too hard to document.
(If you have ever tried to figure out another person's complex spreadsheet, you know what I mean.)
Particulary well publicized was the Excel error whose correction
<a href="http://www.peri.umass.edu/236/hash/31e2ff374b6377b2ddec04deaa6388b1/publication/566/">overturned a much cited Reinhart and Rogoff study</a>.
But studies indicate that almost all large spreadsheet have serious errors.<sup><a href="http://www.j-paine.org/eusprig2001_as_html/eusprig2001.html">1</a>,<a href="http://arxiv.org/abs/0802.3457">2</a></sup>
Basic <a href="http://www.pubmedcentral.nih.gov/articlerender.fcgi?tool=pubmed&pubmedid=15214961">data handling glitches</a> have been documented even in the most popular spreadsheet applications.
The lack of transparent scripting facilities means that it is very difficult to understand someone else's spreadsheet or even one’s own spreadsheet developed months or years ago.
If all you want to educate someone to do is one-time, never-to-be-revisited, quick-and-dirty computations,
then teach them a traditional spreadsheet.
Otherwise teach them a format that allows serious documentation and transparency of manipulations.
At the very least,
eschew traditional spreadsheets in favor of <a href="#scispreadsheets">newer alternatives</a>,
such as scientific spreadsheets and engineering spreadsheets.
</p>

<p>
Comment: some problems with spreadsheets can in principle be overcome by using them directly just for data storage and then preforming manipulations via a scripting language that exploits the spreadsheet's computational and graphics facilities---on a Windows platform, perhaps VBA or better yet Python with win32com;
on a Unix platform, perhaps ABV or Python or a plug-in that supports scripting.
Of course this is not how most people use spreadsheets.
There are also engineering spreadsheets that allow explicit scripting and treat data in a more object oriented fashion.
These are tools that can be properly used for serious work.
</p>

<p>
Comment: Python can read and write tranditional spreadsheets.
For simple spreadsheets see the <a href="http://docs.python.org/library/csv.html">CSV</a> module.
For more advanced needs,
consider <a href="http://pypi.python.org/pypi/xlrd">xlrd</a>
and <a href="http://pypi.python.org/pypi/xlwt">xlwt</a>.
</p>

<ul>
<li>
<a href="http://www.gnome.org/projects/gnumeric/">GNUmeric</a> is a full featured spreadsheet that competes with commercial spreadsheets.
A Windows version became available at the end of 2004.
Java users can produce gnumeric files with <a href="http://www.jfree.org/jworkbook/">JWorkBook</a>.
</li>
<li>
<a href="http://www.gnu.org/software/oleo/oleo.html">Oleo</a> is a lightweight spreadsheet.
Supports command-based programming.
</li>
<li>
<a href="http://www.ping.be/bertin/abs.shtml">abs</a>
supports the ABV macro language,
which is VBA compatible.
</li>
<li>
<a href="http://www.moria.de/~michael/teapot/">TeaPot</a> uses a third dimension instead of row and column hiding.
</li>
<li>
<a href="ftp://space.mit.edu/pub/davis/slsc/">slsc</a>
</li>
<li>
Many more spreadsheets are listed in the <a href="http://www.faqs.org/faqs/spreadsheets/faq/">Spreadsheets FAQ</a>.
</li>
</ul>

<div id="scispreadsheets">
Scientific spreadsheets,
often called engineering spreadsheets,
are much better working environments than traditional spreadsheets.
A scientific spreadsheet treats data as objects
and allows programmatic manipulation in a spreadsheet-like environment.
If you use this properly, 
it can overcome many of the problems with spreadsheets while still allowing easy graphics creation.
Serious spreadsheet use will involve a lot of scripting.
You should therefore choose a scientific spreadsheet that supports an
easy to use yet powerful scripting language.
(I recommend Python.)
Here are a few possibilities.
<ul>
<li>
<a href="http://www.picalo.org/">Picalo</a>
is a data analysis tool with a spreadsheet interface to database operations.
(License: GPL; Language: Python; Scripting language: Python)
</li>
<li>
<a href="http://resolversystems.com/">Resolver</a> is a quite amazing scientific spreadsheet.
Free for educational use.  Sadly, no longer under development.
(Scripting language: Python)
</li>
<li>
<a href=">
">Siag</a> (Scheme in a Grid).
</li>
<li>
<a href="http://www.dadisp.com/">DaDisp</a> is an "engineering spreadsheet"
that is currently free for academics.
</li>
<li>
<a href="http://pyspread.sourceforge.net/">Pyspread</a> is
"provides an arbitrary size, three-dimensional grid for spreadsheet calculations. Each grid cell accepts a Python expression."
Cross platform.  (Language: Python. License: GPL 3.)
</li>
<li>
A very simple but powerful spreadsheet application is <a href="http://code.google.com/p/simplecells/wiki/Introduction">simplecells</a>.
</li>
<li>
If you really want to attempt scientific computing using Excel,
you can treat it as a compuing engine and script it.
One interesting approach is to embed a Python interpreter in Excel using <a href="http://code.google.com/p/pyinex/">pyinex</a>.
</li>
</ul>
</div>

<p>
If you are interested in spreadsheet structures,
you may be interested in <a href="http://savannah.nongnu.org/projects/fenfire/">Fenfire</a> generally and <a href="http://xanadu.com/zigzag/tutorial/ZZwelcome.html">ZigZag</a> more specifically.
</p>

<h3 id="database">Databases</h3>

<p>
Perhaps the simple yet powerful <a href="http://www.scriptaworks.com/cgi-bin/wiki.sh/NoSQL/HomePage">NoSQL</a> will meet your needs.
More traditional approaches follow.
</p>

<p>
<a href="http://www.sqlite.org/">SQLite</a>
"is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine".
(License: Public Domain.)
</p>

<p>
<a href="http://www.firebirdsql.org/">FireBird</a>
"is a relational database offering many ANSI SQL standard features that runs on Linux, Windows, and a variety of Unix platforms."
</p>

<p>
<a href="http://www.openoffice.org/">OpenOffice</a> includes a database.
GNOME Office includes <a href="http://www.gnome-db.org/">GNOME-DB</a>,
which is reputed to be very good.
For enterprise needs,
<a href="http://www.postgresql.org/">PostgreSQL</a> has a good reputation:
PostgreSQL is a free-and-open-source, SQL-compliant, object-relational database management system,
reputed to be highly-scalable.
Using <a href="http://ruby-lang.org/en/">Ruby</a> with <a href="http://www.rubyonrails.org/">Rails</a> and say <a href="http://mariadb.org/">MariaDB</a> or <a href="http://www.postgresql.org/">PostgreSQL</a>
is getting a lot of <a href="http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html">buzz</a> for developing data-base backed web applications.
</p>

<p>
Simple but structured needs may even be met by <a href="http://openrj.sourceforge.net/">Open-RJ</a>.
</p>

<h4>Middleware, including Object Request Brokers (ORBs)</h4>

<ul>
<li>
<a href="http://omniorb.sourceforge.net/">omniORB</a>
fast, largely CORBA compliant. (License: LGPL)
</li>
<li>
<a href="http://www.zeroc.com/ice.html">ICE</a>
(Internet Communications Engine)
is a high-performance Internet communications platform.
(License: GPL)
</li>
</ul>


<h3 id="projectmanager">Project Managers</h3>

<p>
<a href="http://faces.homeip.net/">faces</a> is a user friendly project management tool. (License: GPL; Language: Python)
</p>

<p>
<a href="http://www.taskcoach.org/">Task Coach</a> is a lightweight task manager. (License: GPL; Language: Python)
</p>

<p>
<a href="http://www.taskjuggler.org/example.php">Task Juggler</a> is very popular. (License: GPL)
</p>

<p>
<a href="http://www.openoffice.org/">OpenOffice</a> includes a database.
GNOME Office includes <a href="http://mrproject.codefactory.se/">MrProject</a>,
"a project planning, scheduling and tracking tool.
</p>

<h3>CAD</h3>

<div>
<a href="http://www.cycas.de/">CYCAS</a> is the only cross-platform CAD package I am aware of.
The most popular CAD program remains the Windows&reg; based <a href="http://usa.autodesk.com/">AutoCAD</a>.
</div>

<h4>Data Formats</h4>

<p>
Consider <a href="http://hdfgroup.com/whatishdf5.html">HDF5</a>
for substantial databases. (<a href="http://hdfgroup.com/HDF5/RD100-2002/All_About_HDF5.pdf">Overview</a>.)
<a href="http://www.hdfgroup.org/HDF5/release/obtain5.html">Binaries</a>.
<a href="http://mail.python.org/pipermail/python-list/2004-November/291969.html">Windows installation</a>.
</p>

<h3 id="desktop">Desktop Publishing</h3>

<p>
<a href="http://www.scribus.net/">Scribus</a> is a featureful, cross-platform desktop publishing application.
Supports PDF 1.4 and Python scripting.
"The Scribus file format is XML based; open and completely documented."
(License: GPL)
Used by professionals to send multipage full color layouts sent directly to commercial print houses.
Supports CMYK separation, PDF generation, and much of the toolsets you get from commercial packages
like Quark or InDesign.
</p>

<h3>Fax</h3>

<p>
<a href="http://www.ifax.com/">HylaFAX</a> offers an open source version for a variety of *nix platforms.
(This <a href="http://www.hylafax.org/archive/2005-05/msg00325.html">OpenOffice setup discussion</a> may be helpful.)
I do not know of any FOSS fax software for Windows or Mac: let me know if you do!
</p>


<h3>Instant Messaging</h3>

<p>
<a href="http://developer.pidgin.im/">Pidgin IM</a> (formerly Gaim)
is a free and open source instant messaging client for a variety of platforms.
<a href="http://www.scatterchat.com/">ScatterChat</a> is a secure enhancement of gaim.
</p>
<p>
Mac users can consider <a href="http://fire.sourceforge.net/">Fire</a>,
which supports most popular instant messaging services. (GPL)
</p>

<h3 id="utilities">Utilities</h3> 


<h4>Character Composers</h4>

<p>
A compose key allows inputting special characters as key combinations.
Some text editors provide support for this
(e.g., digraphs in Vim).
Linux includes compose-key activation as a native ability.
For Windows users,
a few are provided via the Alt key and the numeric keypad.
However, <a href="https://github.com/samhocevar/wincompose">WinCompose</a>
provides better functionality. (License: <a href="http://www.wtfpl.net/">WTFPL</a> (essentially public domain).)
(There is a <a href="https://www.youtube.com/watch?v=FCyNTKLyP4Q">Youtube tutorial for WinCompose</a>.)
</p>


<h4 id="calculators">Calculators</h4>

<p>
Calculators are still useful.
Here are a few of many.
</p>

<p>
Reverse Polish Notation:
<br />
The <a href="http://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html">dc</a> desktop calculator,
for those comfortable in a shell (including cmd.exe),
is cross-platform, wonderfully fast, and ever handy---highly recommended!
Another cross platform possibility is <a href="http://kalc.sourceforge.net/">kalc</a>.
For Linux you can try <a href="http://packages.debian.org/unstable/math/rpncalc.html">rpncalc</a>.
For Windows I like the freeware 
<a href="http://www.mystikeep.com/shareware/rpncalc/rpncalc.htm">RPNCalc</a>,
which is also ported to WinCE.
<a href="http://www.nthlab.com/software/rpn/welcome.html">RPN</a> is an interesting calculator for the PalmOS.
And finally for PostScript enthusiasts,
I cannot refrain from mentioning <a href="http://www.american.edu/econ/notes/pscalc.htm">PSCalc</a>.
</p>

<p>
For a console calculator,
try the cross-platform <a href="http://directory.fsf.org/GNU/bc.html">bc</a>.
(The <a href="http://www.gnu.org/software/bc/manual/html_mono/bc.html">bc manual</a> is very good.)
For a graphics calculator,
try the cross-platform <a href="http://www.graphcalc.com/">GraphCalc</a>.
Or just use <a href="#gnuplot">gnuplot</a> as a graphics calculator.
<a href="http://www.fsf.org/gnulist/production/calc.html">GNU Emacs Calc</a> has many features,
including graphics using GNUPLOT.
<a href="http://www.cohort.com/CoCalc.html">CoCalc</a> is a freeware JAVA calculator.
</p>

<p>
<a href="http://rascal.sourceforge.net/">Rascal</a> is enough more than a calculator that it may be considered a simple matrix programming language.
This is also true of <a href="http://hem.bredband.net/b106492/main.html">cxc</a>,
and <a href="http://web.tiscali.it/iguana.lang/">Iguana</a> seems to be evolving in the same direction.
</p>


<h4>File Compression</h4>

<ul>
<li>
The most promising free cross-platform GUI solution (well, ok, it runs under WINE in Linux) I have found is <a href="http://www.7-zip.com/">7-zip</a> (license: LGPL) and <a href="http://p7zip.sourceforge.net/">p7zip</a>,
which decompresses many formats including of course ZIP and RAR.
However <a href="http://www.lzop.org/">LZOP</a> is interesting if you do not need multiple-format support.
Currently most useful are probably the <a href="http://www.ctan.org/tex-archive/tools/zip/info-zip/">Info-ZIP utilities (zip and unzip)</a>.
Also consider (for single files) <a href="http://www.gzip.org/">gzip</a>.
(Windows users may be interested in <a href="http://home.hiwaay.net/~crispen/src/#wingz">Win-GZ</a>,
which provides a Windows interface to gzip,
and the Wiz GUI for zip and unzip.
</li>
<li>
You can find web lists of freeware zip utilities for various platforms.
(<a href="http://www.thefreesite.com/Free_Software/Unzipping_compression_freeware/">FreeSite</a>|<a href="ftp://ftp.uu.net/pub/archiving/zip/WIN32/">UUNet</a>).
<a href="http://jzip.sourceforge.net/">JZip</a> is a free WinZip clone for Windows users.
Some people like <a href="http://quickzip.ifroggy.com/">QuickZip</a>.
(Of course <a href="http://sources.redhat.com/bzip2/">bzip2</a> can also open .bz2 files.)
</li>
<li>
<a href="http://www.pkware.com/shareware/pkzip_win.html">PKZip</a> is the classic shareware compression utility.
</li>
<li><a href="http://upx.sourceforge.net/">UPX</a> is a free, portable, extendable, high-performance executable packer for several different executable formats.
</li>
<li><a href="ftp://ftp.cs.washington.edu/pub/ntemacs/utilities/">Other
archive utilities</a> for various platforms, including Windows 95.
</li>
<li>
And of course Python users will often be well served by the <a href="http://www.python.org/doc/2.4.1/lib/module-zipfile.html">zipfile</a> module.
</li>
</ul>

<h4 id="remote">Remote Access</h4>

<h5 id="ftpclients">Terminal Emulation</h5>

<ul>
<li>
<a href="http://vimeo.com/24857127">Gate One</a>
(HTML 5 ssh client and terminal emulator. Nice functionality!)
</li>
<li>
<a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a>,
the classic telnet/ssh client.
</li>
</ul>


<h5 id="ftpclients">File Transfer (FTP)</h5>

<p>
Check <a href="http://www.thefreecountry.com/webmaster/freeftpclients.shtml">TheFreeCountry</a> for a longer list.
</p>

<p> 
Python users get a basic cross-platform solution automatically via the ftplib module.
(For an even lighter approach, try this <a href="http://mail.python.org/pipermail/python-list/2001-January/024980.html">TFTP module</a>.)
The Python Cookbook uses this module to provide a <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/302592">threaded ftp client</a>.
As of August 2005, ftplib does not provide any secure services, however.
For SSH2 services you can use <a href="http://www.lag.net/paramiko/">paramiko</a>,
which relies on <a href="http://www.dlitz.net/software/pycrypto/">pycrypto</a>.
These are very easy installs!
(Get paramiko from the releases tab on GitHub, and see the README file for instructions.
Windows users can also look at <a href="http://www.voidspace.org.uk/python/modules.shtml#pycrypto">Voidspace</a> for prebuilt PyCrypto binaries.)
I provide an <a href="http://www.american.edu/econ/pytrix/sftp_client.py">example (usable) SFTP client</a> using these modules,
but you can even have a graphical interface with SFTP support via <a href="http://home.gna.org/wxsftp/">wxSFTP</a>.
(If your needs are more substantial,
you can use <a href="http://pycurl.sourceforge.net/">pycurl</a> as a Python interface to <a href="http://curl.haxx.se/libcurl/">libcurl</a>,
which should be able to meet all your ftp needs.)
</p>

<p>
If you need FTP/S, you can try <a href="http://trevp.net/tlslite/">TSLite</a>,
which offers a pure Python solution for FTP over TSL.
</p>

<p>
For Windows: I find the free and open source <a href="http://filezilla.sourceforge.net/">FileZilla</a> to be excellent for FTP and SFTP.
(As of August 2005, however, I have had some problems with FTP/S in passive mode.)
Other possibilities:
<a href="http://winscp.sourceforge.net/eng/">WinSCP</a>.
<a href="http://sshwindows.sourceforge.net/">OpenSSH for Windows</a>.
<a href="http://www.ipswitch.com/ws_ftp_reg.html">WS FTP</a>
had a free (for academics and students), easy to use, ftp program for Windows platforms,
but I think the free version went away.
<br />
For Mac:
<a href="http://icu.unizh.ch/~dkocher/cyberduck/">CyberDuck</a>.
<br />
For Un*x:
<a href="http://www.ncftp.com/ncftp/">NcFTP</a>.
(Also runs on Windows and Mac, for those willing to learn ftp commands.)
<a href="http://www.openssh.com/">OpenSSH</a>.
</p>

<h4>Optical Character Recognition</h4>

<p>
<a href="http://jocr.sourceforge.net/">GOCR</a>,
<a href="http://kooka.kde.org/">Kooka</a>,
<a href="http://www.vividata.com/index.html">OCRShop</a>,
<a href="http://www.geocities.com/claraocr/">ClaraOCR</a>
</p>

<h3 id="reports">Report Generation</h3>

<p>
Generating reports is a common need.
These can be informal or presentational,
and may or may not need to be printed.
</p>

<p>
<a href="http://www.gnu.org/software/gawk/gawk.html">gawk</a>,
a powerful report generation language which takes only a moment to learn well enough to produce simple reports.
(E.g., you can manage student grades with Gawk much more easily than with a spreadsheet.)
</p>

<p>
<a href="#reportlab">ReportLab</a> allows direct creation of PDF graphics and reports.
</p>

<p>
<a href="http://www.lowagie.com/iText/">iText</a>
can be a very powerful report generator if you know a bit of Java.
</p>

<p>
<a href="http://xmlgraphics.apache.org/fop/">Apache Formatting Objects Process (FOP)</a>
offers amazing flexibility.
Java based.
(License: Apache 2.0)
</p>

<h4>Printing Reports</h4>

<p>
Program controlled printing can be a challenge,
especially under Windows.
If you have the option of producing your reports as PDF or as appropriately formatted text,
then you can usually just ask your operating system to use a default application to print them.
Otherwise, you will have to work harder.</p>

<p>
Tim Golden offers a very useful discussion of <a href="http://tgolden.sc.sabren.com/python/win32_how_do_i/print.html">Windows printing under Python</a>.
</p>

<p>
<a href="http://www.infres.enst.fr/~demaille/a2ps/">GNU a2ps</a> allows conversion of text (and other) files to PostScript,
as does <a href="http://linuxcommand.org/man_pages/enscript1.html">enscript</a>
and
<a href="http://www.wam.umd.edu/~zben/PostScript/asciiprint.html">ASCIIprint</a>.
</p>

<p>
<a href="http://deco-cow.sourceforge.net/">wordaxe</a> can be used for hyphenation.
For example, you may want to generate your own PostScript or PDF.
As a more specific example,
the wordaxe hyphenation library offers <a href="#reportlab">ReportLab</a> support.
For an easy interface, try <a href="http://code.google.com/p/rst2pdf/">rst2pdf</a>,
which offers cascading stylesheets and supports TTF and Type1 font embedding.
</p>

<h4>Version Control</h4>

<p id="vcs">
There are many version control systems (VCSs):
see the <a href="http://en.wikipedia.org/wiki/List_of_revision_control_software">Wikipedia list</a>.
If you just need revision control for an individual project,
you can use <a href="http://www.gnu.org/software/rcs/rcs.html">RCS</a>.
For simple version control on multiuser projects,
consider <a href="#svn">Subversion (SVN)</a>.
Currently distributed VCSs are the rage,
with <a href="http://bazaar-vcs.org/">Bazaar</a> (License: GPL),
<a href="http://mercurial.selenic.com/">Mercurial</a> (License: GPL),
and especially <a href="http://git.or.cz/">Git</a> (License: GPL) having particularly high profiles.
(Windows users should consider <a href="http://windows.github.com/">GitHub for Windows</a>.)
This is probably not important for small projects.
See the <a href="http://www.opensolaris.org/os/community/tools/scm/history/">OpenSolaris evaluations</a>.
</p>

<h5 id="svn">Subversion</h5>

<p>
See my <a href="#svn-hints">Subversion hints</a>.
</p>

<p>
<a href="http://subversion.tigris.org/">Subversion</a> is probably the most widely used version control system for new projects.
There is an extensive <a href="http://svnbook.red-bean.com/">user manual</a>.
(Be sure to read about the <a href="http://svnbook.red-bean.com/en/1.5/svn.tour.cycle.html">basic work cycle</a>.
Simplest bottom line: change to your working directory and enter
<code>svn update</code>, <em>then</em> make changes to your files.
Before you commit do another update,
and finally commit the changes with <code>svn commit -m "My message about the changes."</code>.)
</p>

<p>
The <a href="http://pysvn.tigris.org/">pysvn</a> project provides a Python based graphical interface to SVN.  
</p>

<p>
SVN on windows:
download and execute the <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">Windows installer</a>.
Users who dislike the command line should consider <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>
as a user-friendly <a href="http://subversion.tigris.org/">Subversion</a> client.
</p>

<p>
SVN with Vim:
<a href="http://vim.sourceforge.net/scripts/script.php?script_id=90">vcscommand</a>
provide keybindings for SVN control from the Vim editor.
</p>

<p>
Free and low cost SVN repositories:
<br />
<a href="https://opensvn.csie.org/">OpenSVN</a>
<br />
<a href="http://code.google.com/hosting/">Google Projects</a>
(open source projects only)
<br />
<a href="http://unfuddle.com/home">Unfuddle</a>
(this one looks promising for general use)
<br />
<a href="http://www.assembla.com/">assembla</a>
<br />
<a href="http://www.nexumoja.org">nexUmoja</a>
</p>

<h5>Mercurial</h5>

<p>
Free and low cost Mercurial repositories:
<br />
<a href="http://freehg.org/">freeHg.org</a>
</p>

<h3>Miscellaneous Office Needs</h3>

<h4>Security</h4>

<p>
Track stolen laptops and cell phones with <a href="http://preyproject.com/">Prey</a>.
</p>

<h4>E-Book Readers and Converters</h4>

<p>
<a href="http://calibre-ebook.com">Calibre</a> has quite amazing conversion capabilities
and supports many e-book formats.
</p>

<h4 id="outliners">Outliners</h4>

<p>
Outlines can help writers and programmers.[
<a href="http://www.troubleshooters.com/tpromag/199911/199911.htm">1</a>,
<a href="http://linux.open.ac.uk/108/oregan.html">2</a> ]
Many good editors offer substantial outlining capability.
Examples include the <a href="http://www.vimoutliner.org/index.php">VimOutliner</a>
and the <a href="#emacs">emacs outline mode</a>.
</p>
<p>
There are many commercial and free outliners.
The <a href="http://outliner.sourceforge.net/">Java Outline Editor</a> offers serious outline functionality.
</p>

<h4>Mind Mappers</h4>

<p>
<a href="http://freemind.sourceforge.net/">FreeMind</a> is a highly capable cross-platform mind mapper.
It is Java and includes and Windows installer.
(License: GPL)
For a more document oriented approach,
try <a href="http://freehackers.org/~tnagy/kdissert/index.html">Kdissert</a>.
(License: GPL)
<a href="http://www.mindmup.com/">MindMup</a> provides free <em>online</em> mind mapping,
including online collaboration.
(License: MIT. Supported by Google Drive.)
</p>
<p>
<a href="http://treesheets.com/">Tree Sheets</a> is an odd cross
between a spreadsheet and a mind mapper.
</p>

<h4>Video Players</h4>
<p>
<a href="http://www.getmiro.com/">Miro</a> (License: GPL. Formerly known as Democracy Player).
</p>

<h4>Making Posters</h4>

<p>
The <a href="http://duramecho.com/ComputerInformation/HowToDoPowerpointPosters.html">basic situation</a>.
The <a href="http://www.cis.upenn.edu/~mwh/tips.html">graphics problem</a>.
</p>


<h4 id="preprocess">Text Preprocessors</h4>

<p>
The hoary standard is <a href="http://www.gnu.org/software/m4/">m4</a>.
An interesting alternative is <a href="http://www.alcyone.com/pyos/empy/">empy</a>.
Good luck.
</p>




<h4 id="OS">Operating Systems</h4>

<!-- 
http://www.mhuffman.com/notes/dos/bash_cmd.htm
http://www.wilsonmar.com/1opsys.htm
-->

<p>
After the Windows and Mac operating systems,
most people will think first of <a href="http://www.linux.org">GNU Linux</a>,
an excellent, free, Open Source version of the Unix operating system.
Another popular free and open source Unix relative is <a href="http://www.freebsd.org/">FreeBSD</a>.
Another popular version of the Unix operating system is <a href="http://www.sun.com">Solaris</a>,
a FOSS version of which is available as
<a href="http://wiki.illumos.org/display/illumos/illumos+Home">illumos</a> (formerly OpenSolaris).
</p>

<p>
<a href="http://cm.bell-labs.com/plan9/">Plan 9</a> is very roughly a faster, more secure multi-processor Unix.
There is an open source implementation of BeOS called <a href="http://haiku-os.org/">Haiku</a>,
but in 2015 it seems that organization issues may lead to a forked project calles Senryu.
(Haiku can install and run within Windows.)
<a href="http://get.qnx.com/">QNX's Neutrino Real Time Operating System</a> is also a compact and stable operating systems.
(Can install and run within Windows,
and thus does not require a separate partition or boot loader!)
An interesting effort to produce an open source (and binary compatible) substitute for Windows NT
is <a href="http://www.reactos.com/">ReactOS</a>, which already has basic console functionality.
A few people may also be interested in <a href="http://www.freedos.org/freedos/about/">FreeDOS</a>.
</p>

<div>
If you pick the <a href="http://www.linux.org/">GNU/Linux Operating System</a> you may want to visit
  <ul>
  <li><a href="http://SAL.KachinaTech.COM/">SAL (Scientific Applications on Linux</a>
  </li>
  <li><a href="ftp://ftp.halcyon.com/pub/linux/linuxdoc/">Linux Documentation Project</a>
  </li>
  <li><a href="http://moriarty.es.yale.edu/LDP/">HTML versions of LDP docs</a>
  </li>
  <li><a href="news:comp.os.linux.misc">Linux newsgroup</a>
  </li>
  <li><a href="ftp://ftp.halcyon.com/pub/linux/slackware/">GNU's Slackware Linux distribution</a>
  </li>
  <li><a href="news:comp.os.linux.help">Linux help newsgroup</a>
  </li>
  <li><a href="http://www.redhat.com/">Red Hat software</a> offers a
  <a href="http://www.redhat.com/linux-info/linux-app-list/">good list of linux software</a>.
  </li>
  </ul>
Furthermore, if your interests are computational,
you may want to consider the <a href="http://dirk.eddelbuettel.com/quantian.html">Quantian</a> distribution.
</div>


<div>
A recent review of <a href="http://franticindustries.com/blog/2006/12/21/big-webos-roundup-10-online-operating-systems-reviewed/">Web OSs</a> highlights another way to get basic OS functionality.
</div>






<h4>Unix Tools</h4>

<h5>Unix Tools for Windows and System Tools</h5>

<p>
Where to get a decent shell for Windows?
Try <a href="http://www.steve.org.uk/Software/bash/">GNU Bash for Windows</a>.
(Here is an <a href="http://www.arachnoid.com/linux/shell_programming.html">introduction to bash programming</a>.)
For free and open source,
you might try <a href="http://win-bash.sourceforge.net/">win-bash</a>.
If you run WinXP SP2,
you can also try <a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx">Windows Power Shell</a> (requires the .NET framework v.2).
</p>

<ul>
<li>
I suggest starting by getting <a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">CoreUtils for Windows</a>.
There are other <a href="http://www.cs.washington.edu/homes/voelker/ntemacs.html#other-tools">Ports of Unix tools to Win95</a>.
</li>
<li id="search">
Are you still using Microsoft search tools that don't really support regular expressions?
(And under Windows XP, <a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q309173">Explorer search often fails</a> in any case.
E.g., when searching for text, Explorer <a href="http://support.microsoft.com/?id=309173">fails to search all files</a>.)
Fix that!
<a href="http://www.tgries.de/agrep/">agrep</a> is available for Windows!
(There is also a <a href="http://www.bio.cam.ac.uk/~mw263/pyagrep.html">Python implementation</a>,
although it probably makes more sense to use Robert Kern's <a href="https://svn.enthought.com/svn/sandbox/grin/">grin</a>.)
Alternatives:
<a href="http://gnuwin32.sourceforge.net/packages/grep.htm">grep</a> (with <a href="http://www.gnu.org/software/grep/doc/">helpful manual</a>),
<a href="http://www.dcc.uchile.cl/~gnavarro/software/">nrgrep</a> (gets good reviews),
<a href="http://wilbur.redtree.com/">Wilbur</a>,
<a href="http://www.mythicsoft.com/agentransack/default.aspx">Agent Ransack</a>.
Finally, you can try to <a href="http://support.microsoft.com/?id=309173">fix this piece-meal in Windows</a>.
(Also see MS on <a href="http://msdn.microsoft.com/en-us/library/bb318649%28VS.85%29.aspx">extending the index</a>.)
</li>
<li>
Amazingly, in 2004 Microsoft made free what is essentially a Unix system for Windows,
called <a href="http://technet.microsoft.com/en-us/library/bb463212.aspx">Windows Services for Unix (SFU)</a>.
Add Interop Systems' <a href="http://www.interopsystems.com/downloads.htm">open source tools for SFU</a> and you have a powerful combination (sort of like Cygwin but without an X server, and you can add the commercial Desktop-X).
</li>
<li id="diff">
<a href="http://kdiff3.sourceforge.net/">KDiff3</a> is a good cross-platform solution.
<a href="http://meld.sourceforge.net/">Meld</a> if a useful visual diff and merge tool written in Python.
You may come to prefer it over <a href="http://www.gnu.org/software/diffutils/diffutils.html">gnu diffutils</a>.
<a href="http://xxdiff.sourceforge.net/">xxdiff</a> is amazing but only for Un*x users.
<a href="http://www.openetwork.com/delta.html">Delta</a> is a sophisticated implementation of the Unix "diff" command for Windows users.
</li>
<li>
Microsoft bought <a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx">Sysinternals</a>
but continues to offer their remarkable utilities free for non-commercial Windows users,
incuding the wonderful ProcessExplorer process monitor (which replaces the older Filemon and Regmon utilities).
</li>
<li>
<a href="http://www.tinyapps.org/">Tiny Apps</a> for Windows users.
</li>
<li>
<a href="http://unxutils.sourceforge.net/">Unix Utilities for Windows</a>, along with many useful links.
Includes grep, sed, and <a href="http://www.gnu.org/software/gawk/gawk.html">gawk</a>.
(You can find <a href="http://www.fsf.org/manual/manual.html">man pages online</a>.)
Many of these can be found individually at <a href="http://gnuwin32.sourceforge.net/packages.html">GnuWin32</a>,
along with much else.
Also see <a href="http://www.research.att.com/sw/tools/uwin/">U/Win</a>,
which provides a Korn shell for Windows along with standard unix utilities to run in this shell.
(Btw, <a href="http://www.well.ox.ac.uk/~johnb/comp/awk/awk.html">Awk Introduction</a> is a useful very brief introduction to Awk.)
</li>
<li>
<a href="http://www.snippets.org/">Snippets</a> offers a free toolkit of utilities.
</li>
<li>
<a href="http://www.nicemice.net/par/">par</a> is a useful paragraph formatting utility.
(See the <a href="http://www.nicemice.net/par/par-doc.var">documentation</a>.)
Yingwei Peng complied <a href="http://www.math.mun.ca/~ypeng/other/Par.exe">par.exe</a> for Win32, which I last saw here at v.1.51.
Stanislav Sitar compiled <a href="http://www.nicemice.net/par/par152ex.zip">par.exe</a> version 1.52 as a DOS executable.
</li>
</ul>

<h5>Unix Tools for MacIntosh</h5>
<p>
<a href="http://fink.sourceforge.net/">Fink</a> has an extensive collection of Unix tools for Mac users.
</p>



<h4 id="pdf">View and Manipulate PDF</h4>

<h5>PDF Maniuplation</h5>

<ul>
<li>
<a href="http://pybrary.net/pyPdf/">PyPdf</a>
offers extensive PDF manipulation and extraction facilities.
(License: BSD.  Language: Python.)
</li>
<li>
The <a href="http://www.accesspdf.com/pdftk/">PDF Toolkit</a>
is extremely FAST, handy, and easy to use if you need to manipulate PDF files.
(Also, see the website for a <a href="http://www.accesspdf.com/article.php/20050421092951834">Python port of forge_fdf</a>.)
</li>
<li>
<a href="http://sourceforge.net/projects/pdfsam/">PDF Split and Merge</a>
provide a GUI interface to PDF file manipulation.
(License: GPL; Language: Java)
</li>
<li>
Do not overlook the GNU <a href="http://gnuwin32.sourceforge.net/packages/psutils.htm">psutils</a>.
</li>
<li>
You can edit PDFs with <a href="http://sourceforge.net/projects/pdfedit/">pdfedit</a>.
<a href="http://www.docu-track.com/home/prod_user/pdfx_viewer/">PDF-Xchange Viewer</a>
is free and can annotate. (Commercial product.) 
</li>
<li>
<a href="http://sourceforge.net/projects/arenable/">AREnable</a> enables the commenting features in Reader.
</li>
<li>
<a href="http://www.cs.wisc.edu/~ghost/">GhostScript, GhostView, and GSView</a>.
Ghostview and GSView can create pdf-files.
Here is one of many ways.
1. Print your documents to a file, using a postscript printer.
2. Open the file in Ghostview.
3. Print the document again to a file using the printer "pdfwrite".
</li>
</ul>

<h5>PDF Viewing</h5>

<ul id="pdfviewers">
<li>
The most popular viewer is the free (but closed source)
<a href="http://www.adobe.com/acrobat/">Adobe Acrobat Reader</a>.
</li>
<li>
For a list of free and open source readers,
see <a href="http://pdfreaders.org/">PDFreaders.org</a>.
My favorite reader on Windows platforms is
<a href="http://blog.kowalczyk.info/software/sumatrapdf/">Sumatra PDF</a>,
which is amazing, fast, and free.
SumatraPDF is based on <a href="http://poppler.freedesktop.org/">poppler</a>
and therefore on <a href="http://www.foolabs.com/xpdf/">X pdf</a>.
(<a href="http://www.opengroup.org/infosrv/PDF/xpdf/">xpdf</a> is a cross platform PDF viewer,
which comes with tools for PDF file manipulation.)
</li>
<li>
Also using poppler is
<a href="http://okular.kde.org/">Okular</a>,
"a universal document viewer based on KPDF for KDE 4."
</li>
<li>
<a href="http://www.cs.wisc.edu/~ghost/">GhostView</a>
is a cross platform viewer for PostScript and PDF.
(License: Aladdin Free Public Licence)
It depends on the <a href="http://pages.cs.wisc.edu/~ghost/">GhostScript</a> interpreter.
(License: GPL)
</li>
</ul>





<h4>Other</h4>
 

<ul>
<li>
To print a text file and have it automagically formatted to save paper and look nice:
On Windows you can try <a href="http://www.lerup.com/printfile/">Peter Lerup's PrintFile</a> utility,
which offers n-up printing.
</li>
<li id="redmon">
Have you ever wished you could easily print PostScript files on a Windows platform?
The <a href="http://www.cs.wisc.edu/~ghost/redmon/">Redirection Port Monitor (RedMon)</a> allows you to do this easily by using GhostScript and any printer.
On Linux you will want to learn about <a href="http://www.linuxjournal.com/article.php?sid=2337">MagicFilter</a>.
On any platform,
take a look at <a href="http://www.tardis.ed.ac.uk/~ajcd/psutils/">PSUtils</a> has what you need
(n-up printing, size adjustment, page selection, etc.).
</li>
<li id="ctags">
<a href="http://ctags.sourceforge.net">Exuberant ctags</a>. (Version 5.6 as of 29 May 2006.)
LaTeX users should check out Ajit Thakker's <a href="http://www.unb.ca/fredericton/science/chem/ajit/vim.htm">ctags with LaTeX and BibTeX support</a>
(Also see: <a href="#idutils">ID-Utils</a>.)
Windows users currently (2006-07-28) have trouble finding the most recent version:
Brett Calcott offers <a href="http://www.ruminant-marsupial.net/misc/">ctags compiled with VC Express</a>.
</li>
<li>
Some people like <a href="http://www.gnu.org/software/idutils/">ID-Utils</a> better than <a href="#ctags">ctags</a>.
(Windows users should see <a href="http://gnuwin32.sourceforge.net/packages/id-utils.htm">Id-Utils for Windows</a>.)
There is a <a href="http://vim.sourceforge.net/scripts/script.php?script_id=251">Vim plug-in</a> to support ID-Utils.
</li>
<li> <a href="http://csf.colorado.edu/pkt/bci.html">BCI Data Manager</a>
is an MS Windows 3.1 program that manages the data contained
in the U.S. Department of Commerce's BCI and BSDC data files,
and other data that has been converted to the BCI format.
</li>
<li>
<a href="http://www.ulib.org/webRoot/Books/Numerical_Recipes/">Numerical Recipes online</a>
</li>
<li>
<a href="http://www.scientificweb.com/sciencee.html">The Scientific Web</a>
</li>
<li>
<a href="ftp://ftp.cica.indiana.edu/pub/pc/win3/winsock/fingd100.zip">
Windows Finger Daemon</a>
</li>
<li>
<a href="http://www.powerquest.com">Partition Magic</a> is far from free
but you will never go back to fdisk.
</li>
</ul>



<h4>Encryption</h4>

<p>
Note that password protecting your Word files does <em>not</em> encrypt them.
Password protection of PDF files is easily cracked,
although Adobe requires that readers respect the protection.
Some editors (e.g., Vim) allow easy, strong encryption of your text files.
</p>

<ul>
<li>
<a href="http://www.pgp.com/">PGP</a> is the commercial classic for message encryption and disk encryption.
It has roots in the <a href="http://www.openpgp.org/">OpenPGP</a> encryption standard.
<a href="http://www.gnupg.org/">GNU Privacy Guard (GPG)</a> is a free and open source OpenPGP compliant encryption tool.
(GPG is a command-line tool.)
</li>
<li>
<a href="http://www.truecrypt.org/">TrueCrypt</a> provides sophisticated encryption on Windows XP.
</li>
<li>
<a href="http://www.boo.net/~jasonp/qs.html">msieve</a> does fast integer factorization.
If your needs are a bit less demanding and you are a Python user,
you can also try <a href="http://tnt.math.metro-u.ac.jp/nzmath/">NZMATH</a>.
</li>
</ul>





<h3>Agent-Based Simulation</h3>

<p>
Probably the best platform for introductory exploration of agent-based models is <a href="http://ccl.northwestern.edu/netlogo/">NetLogo</a>,
which includes an extensive <a href="http://ccl.northwestern.edu/netlogo/models/">Models Library</a>.
While NetLogo's statistical and mathematical support is limited,
you can <a href="http://netlogo-r-ext.berlios.de/">link it to R</a>
or <a href="http://ccl.northwestern.edu/netlogo/docs/mathematica.html">link it to Mathematica</a>.
Additionally, NetLogo supports Java extensions and can be run by Java programs.
</p>

<p>
After NetLogo, perhaps the most popular multi-agent simulation toolkit is <a href="http://repast.sourceforge.net/">Repast</a>.
(License: New BSD; Language: Java or C++)
</p>

<p>
<a href="http://www.labor-torino.it/english/research/labsim/wild/wp-html/wp-sonnessa.html">Java Agent-based Simulation (JAS) library</a>
</p>

<p>
<a href="http://www.swarm.org">Swarm</a> is useful for multi-agent simulation projects.
</p>

<p>
<a href="http://eodev.sourceforge.net/">Evolving Objects</a> is "is a templates-based, ANSI-C++ compliant evolutionary computation library". (License: LGPL)
</p>


<h3 id="kids">Stuff for Kids (and Educators)</h3>

<p>
<a href="http://banshee-project.org/">Banshee</a> music player. (License: MIT)
</p>

<p>
<a href="http://cdexos.sourceforge.net">CDex</a> CD ripper. (License: GPL)
On Windows, CDex may provide an alternative to the poor iTunes error correction (i.e., the presence of pops and clicks).
</p>

<p>
<a href="http://projects.gnome.org/tomboy/">Tomboy</a> note-taking application.
</p>

<ul>
<li>
<a href="http://www.squeak.org/">Squeak</a> may be the easiest way to get your kid into object oriented programming.
The cross-platform language is not a toy!
Educators may be interested in its potential for
<a href="http://www.squeak.org/Features/FunandGames/">game development</a>.
</li>
<li>
<a href="http://www.alice.org">Alice</a>
is an innovative approach to 3d programming for kids.
</li>
<li>
<a href="http://www.blender.org/">Blender GameKit</a>
(Blender can be scripted with Python.)
</li> 
</ul>

<ul>
<li>
<a href="http://www.lpj-software.com/">lpj slideshow</a> for easy slide-show creation.
</li>
</ul>


<h2 id="openstandards">Open Standards</h2>

<h3>Data Exchange</h3>

<p>
Possibly the simplest open standard for fixed periodicity time-series data
is the <a href="http://www.american.edu/econ/pytrix/opendatabank.htm">open-databank standard</a>.
Most time series econometrics packages support some version of this.
</p>

<p>
<a href="http://www.stecf.org/software/astroasciidata/">AstroAsciiData</a>
provides simple database functionality for ASCII tables.
</p>

<p>
<a href="http://hdf.ncsa.uiuc.edu/whatishdf5.html">HDF5</a>
"is a general purpose library and file format for storing scientific data".
Some support can be found in the econometrics community,
both in commercial and free packages.
Python users have excellent support via <a href="http://pytables.sourceforge.net/html/WelcomePage.html">PyTables</a>.
(To use PyTables with Python 2.4 in Windows platforms,
you will need to get the <a href="ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/current/bin/windows/5-165-win-net.ZIP">HDF5 library compiled for MSVC 7.1 (aka .NET 2003)</a>. 
Users of Python 2.3 on Windows will have to download the version of
<a href="ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/current/bin/windows/5-165-win.ZIP">HDF5 compiled with MSVC 6.0</a>.)
<a href="#octave">Octave</a> and <a href="#Rproject">R</a> provide HDF5 support.
Commercial applications supporting HDF5 include Mathematica and MATLAB version 6.5+,
among many others.
</p>

<p>
The <a href="http://www.unidata.ucar.edu/software/netcdf/">netCDF</a> libraries
"support a machine-independent format for representing scientific data".
The netCDF distribution includes interfaces for C, Fortran77, Fortran90, and C++,
and interfaces are reportedly available for Ada, IDL, Java, MATLAB, perl, Python, R, Ruby, Tcl/Tk.
The interface provided by <a href="http://starship.python.net/~hinsen/ScientificPython/">ScientificPython</a> is supposed to be excellent.
<a href="http://www.pyngl.ucar.edu/Nio.shtml">PyNIO</a> adds to this support of additional formats.
Another possibly faster way to read the netCDF format is <a href="http://cheeseshop.python.org/pypi/pupynere/">pupynere</a>,
a pure Python solution. (License: MIT)
</p>


<hr />



<h2>User Hints</h2>

<h3>CSV Hints</h3>

<p>
CSV stands for comma-separated values.
Distinguish CSV and <a href="http://en.wikipedia.org/wiki/Delimiter-separated_values">DSV</a>.
CSV is described by <a href="http://tools.ietf.org/html/rfc4180">RFC 4180</a>.
Do not give a <tt>.csv</tt> extension to files that fail to match this description.
</p>


<h3 id="emhints">Email Client Hints</h3>

<p>
Be sure to set your client to produce <a href="http://www.american.edu/econ/notes/ailatin1.htm">plain text</a> email.
I have written up a few <a href="http://www.american.edu/econ/notes/htmlmail.htm">reason and clues</a>.
</p>

<h4 id="mahogany_hints">Mahogany Hints</h4>

<p class="boxed">
Make Vim your editor and call it as
<br />
c:\programs\vim\vim73\gvim.exe -c "so $VIM\vimfiles\mail.vim" %s
<br />
where <tt>mail.vim</tt> is where you put any mail processing commands
(e.g., set ft=mail tw=75).
You are welcome to use <a href="http://econpy.googlecode.com/svn/trunk/text/vimfiles/ai_mail.vim">my mail commands</a>.
</p>

<p>
Under OS X Mahogany uses the Unix OpenSSL library, so you need to:
1. install openssl libraries (you can get them from fink)
2. point M to then: in the "helpers" page of the options dialog, add
   the correct paths to them, then it should work
</p>

<h4 id="thunderbird_hints">
Thunderbird Hints
</h4>

<div>
External Editor
<br />
Using your own editor when writing email is strongly recommended.
Get the <a href="http://globs.org/?lng=en">"External Editor" extension</a>.
For example, use <a href="#vim">Vim</a> with Thunderbird as follows.
Define the External Editor command to load Vim as: <code>\pathto\gvim --nofork -c "setf mail"</code>,
so you will get 'mail' syntax highlighting and ftplugins loaded.
Or if you have defined say <code>mail.vim</code>,
a file of useful macro,
you can instead use e.g.,
<code>\pathto\gvim.exe -c "so $VIM\vimfiles\mail.vim"</code>.
After installing the extension,
edit the composition toolbar (the one for replying to email, <em>not</em> the main application toolbar)
and add a button for the external editor.
You can then click that button and your current email reply will be opened in Vim.
<br />
By the way,
you may find my <a href="http://econpy.googlecode.com/svn/trunk/text/vimfiles/ai_mail.vim">ai_mail.vim</a>
to contain some useful abbreviations and commands for email.
Just drop it in your <code>%VIM%\vimfiles</code> folder,
and change your External Editor command to, e.g.,
<code>C:\programs\vim\vim73\gvim.exe -c "so $VIM\vimfiles\ai_mail.vim"</code>.
</div>

<div>
Thunderbird and Acrobat:
Acrobat will not attach PDFs to Thunderbird emails,
unless you you set Thunderbird as your default client in a very specific way.
Open the Control Panel and double click Default Programs.
Pick "Set program access and computer  defaults/Custom (expand this)/Choose a default e-mail program,
and then, click on Thunderbird.
(As of Windows 7 and Acrobat 9.)
</div>

<div>
Make sure your 'textwidth' when editing the email is no larger than 
Thunderbird's "Wrap plain text messages at" option
(in your Composition options);
otherwise when Thunderbird receives your text it may wrap it to a smaller size.
</div>

<div>
Gmail allows IMAP access (wonderful!),
and Google provided detailed instructions for configuring Thunderbird.
</div>

<div>
Key Configurations:
<br />
The <a href="http://mozilla.dorando.at/">keyconfig.xpi</a> extension allows you
to easily change your key bindings.
Carefully follow the <a href="http://kb.mozillazine.org/Keyconfig_extension:_Thunderbird#Simple_built-in_commands">instructions</a>.
I like to associate the <code>d</code> key with <code>goDoCommand('cmd_delete');</code>
and the <code>x</code> key with <code>goDoCommand('cmd_MsgCompactFolder');</code>.
</div>


<h4 id="pine_hints">Pine Hint</h4>

<p>
If you prefer to POP your mail, 
you can get more control over this than Pine offers with
<a href="http://www.xnet.com/~darogers/projects.html">radiks</a>,
a tiny mail transfer program (MTA) for win32 (Windows 9x/NT/2000) which
reads mail from a pop3 server and transfers it 
(filtered, if you want) to your local hard drive.
</p>



<h3 id="scipy_hints">SciPy user hints</h3>

<p>
Use the Lapack routines if you need speed.
E.g., for a QR decomposition use scipy.linalg.flapack.dgeqrf
instead of scipy.linalg.qr.
</p>


<div>
For numarray &lt;= version 1,
there is a matrixmultiply (dot) bug:
<a href="http://sourceforge.net/mailarchive/forum.php?thread_id=5307744&amp;forum_id=4890">http://sourceforge.net/mailarchive/forum.php?thread_id=5307744&amp;forum_id=4890</a>.
The multiplication is done correctly,
but the post-multiplying matrix may be changed after the multiplication is performed.
David Cooke suggests that quick fix is to define your own matrixmultiply (or dot).
E.g.,
<pre>
def dot(a, b):
    return numarray.dot(a, b.view())
</pre>
The original b is then not touched, and the screwed-up matrix is
discarded.
</div>

<div>
Suppose you find you need to import a module with the same name as your script.
First best is to change the name of your script, but you can also
<pre>
import sys
sys.path.remove('')
import sets
</pre>
to remove the current directory from Python's search path.  
If you then need access to any modules in the current directory,
use <code>sys.path.insert(0,'')"</code> first.
</div>

<p>
As late as 2004,
the Numeric and numarray documentation incorrectly stated that
<code>and</code>, <code>or</code>, and <code>not</code> would
operate element-by-element on arrays.
</p>

<p>
Lists are sorted in place, so <code>mylist.sort()</code> return <code>None</code>,
but <code>mylist</code> is now sorted.
</p>

<h3 id="rproject_hints">R Hints</h3>

<p>
Rossiter wrote an accesible <a href="http://www.itc.nl/~rossiter/teach/R/RIntro_ITC.pdf">Introduction to the R Project</a>.
</p>

<p>Documentation:
<br />
Windows users may want to read <a href="http://wwwmaths.anu.edu.au/~wangk/personal/rinfo.php">R Guide for Windows Users by Kevin Wang</a>.
Lund University offers some <a href="http://www.maths.lth.se/help/R/">supplementary documentation</a>;
also <a href="http://www.maths.lth.se/help/R/.R/library/Hmisc/html/00Index.html">Harrell's R utilities</a> along with his <a href="http://lib.stat.cmu.edu/S/Harrell/doc/summary.pdf">guide to LaTeX tables and S</a> may be useful.
Ikaha offers some introductory discussion of <a href="http://www.stat.auckland.ac.nz/~ihaka/120/notes.html">generating graphics in R</a>.
</p>

<p>
Be careful with the definition of R’s PRNG for the geometric distribution:
<code>rgeom</code> has support on nonnegative integers,
since R has <em>p(x) = p (1-p)^x</em>.
A perhaps more common parameterization is <em>p(x) = p (1-p)^(x-1)</em>:
which you can match by adding 1 to the values returned by <code>rgeom</code>.
</p>

<p>
You can write LaTeX documents containing R code whose ouput is to be included in the document with <a href="http://www.ci.tuwien.ac.at/~leisch/Sweave/">Sweave</a>.  
</p>

<div>
Windows users can access R from Python with the 
<a href="http://sunsite.univie.ac.at/rcom/">RDcom server/client</a>.
This allows you to call R
from Python as follows:
<pre><code>
&gt;&gt;&gt; from win32com.client import Dispatch
&gt;&gt;&gt; sc=Dispatch("StatConnectorSrv.StatConnector")
&gt;&gt;&gt; sc.Init("R")
&gt;&gt;&gt; print(sc.Evaluate("2+3"))
5.0
&gt;&gt;&gt; 
</code></pre>
Other approaches to R/Python interaction include the following.
<a href="http://rpy.sf.net">Walter Moreira's RPy module</a> (requires <a href="http://sourceforge.net/pywin32/">pyWin32</a> under Windows) allows you to "embed" R in Python and transparently send data to it.
(You can easily pass objects in <em>both directions</em> using OmegaHat's <a href="http://www.omegahat.org/RSPython/index.html">R/S Plus Python Interface</a>.) 
<a href="http://pypi.python.org/pypi/pyRserve">pyRserve</a> is a simpler solution,
which nevertheless allows running R on a remote server.
</div>



<h3 id="bbox_hints">Bounding Box Hints</h3>

<p>
Occasionally you will need to provide or adjust the bounding box information for a graphic.
Here are some resources.
</p>

<ul>
<li>
<a href="http://www.ctan.org/tex-archive/support/pdfcrop/">pdfcrop</a>
for PDF files. (License: LaTeX Project Public License; Language: perl)
</li>
<li>
<a href="">GhostScript</a>
and many TeX distributions
include <a href="http://www.linuxcommand.org/man_pages/eps2eps1.html">eps2eps</a>,
which can reset the bounding box of an EPS file.
</li>
<li>
If you have Ghostscript 6.0 (or later), the command:
<tt> gs -sDEVICE=bbox -dNOPAUSE -dBATCH file.ps </tt>
will print the bounding box information for file.ps (and then exit gs).
You can then use this information to reset the bounding box.
<a href="http://www.physics.ohio-state.edu/~ntg/scripts/bbox_add.pl">bbox_add.pl</a> is a perl script that uses this approach.
<a href="http://citadel.tistory.com/130">fixBBox.py</a> is a Python script that uses this approach.
(I have not tried these scripts.)
</li>
</ul>

<h3 id="abihints">AbiWord user hints</h3>

<div>
AbiWord supports easy conversion to LaTeX,
and thus easy generation of PDF versions of your documents.
Here is a simple command line approach,
given a document named test.abw to produce a document test.pdf.
<pre><code>
abiword --to=latex test.abw
pdflatex test.latex
</code></pre>
<br />
AbiWord has a special feature: it supports some vi keybindings!
To implement the vi keybindings, 
you need to make two changes your AbiWord.Profile file.
(Windows users should search for this in the Documents and Settings folder.)
First add another Scheme to your AbiWord.Profile file:
Just add the following lines to your AbiWord.Profile file right below the 
already existing "_custom_" Scheme.
<pre><code>
&lt;Scheme
		name="AbiVi"
		KeyBindings="viEdit"
		KeyBindingsCycle="1"
		/&gt;
</code></pre>
By setting KeyBindingsCycle="1"
(1 is on, 0 the default is off)
you will be able to press F12 to switch keybinding mode:
the mode will appear in the Status Bar just to the right of INS.
The second step is to go to the beginning of AbiWord.Profile and find the Select tag;
modify its scheme attribute to refer to the new Scheme you just typed.
It should then look like this:
<pre><code>
&lt;Select
             scheme="AbiVi"
             autosaveprefs="1"
             useenvlocale="1"
             /&gt;
</code></pre>
This is very cool.
You get into insert mode by pressing i and out by pressing &lt;esc&gt;.
A number of basic cursor motion keys (including h j k l w b a A ^ $) and core commands  (including O o D x) are implemented,
along with / for a search dialog.
See <a href="http://www.abisource.com/mailinglists/abiword-dev/99/April/0089.html">http://www.abisource.com/mailinglists/abiword-dev/99/April/0089.html</a> for a list of implemented commands,
but a few do not currently work.
</div>


<h3 id="acrobat-hints">Acrobat hints</h3>

<p>
When you add comments to a document,
the comments are stamped with a name, a date, and a time.
This may well be more information than you want to provide.
You can remove the name stamp from all your comments as follows.
Show the comment list: pick Comments » Show Comment List from the menus.
Select all comments: click on one, and then press ``ctrl-a``.
Change the comment properties:
right click on your selection, click ``Properties``,
pick the ``General`` tab, and change the Author field (e.g., nothing).
Unfortunately, you cannot remove the date and time stamps this way.
However, only the "modified" stamp shows to the reader,
when you change the author this way,
it should update the modified time on all the comments.
</p>


<h3 id="gauss-hints">GAUSS user hints</h3>


<ol title="User Hints">
<li>
Output to the output window is stored in a buffer which has to
reach a certain capacity before anything shows up.
You can use the sentence <code>print /flush;;</code>
to force GAUSS to flush the buffer.
You can also use the "configure/preferences/cmd_window" menu 
and uncheck the box for "Buffer output". 
</li>
<li id="gausslight">
Aptech will supply students with GAUSS Light free of charge!
(I've been using it extensively for teaching, as a result.)
Compared with the full version, there are matrix limitations
(ie.., 10,000 elements and/or 100 X 100
matrix limit, 1 Mb global symbol memory,
1 1/2 Mb total workspace) and no source level debugger.
Here are the download instructions I received from Aptech.
It seems the universal binary for the Mac is for OS X v.10.4 or later
and only target the Intel platform!? (But I'm not certain...)
<pre>
Please note that files can only be downloaded via COMMAND LINE FTP, not
a browser (such as Internet Explorer, Netscape, Firefox, etc.).  You
must use a command window to download the files.  To open a command
prompt window, click on Start, then Run, and type cmd.

GAUSS Light 8.0 for Windows
---------------------------

Below is a list of files that you may wish to download and
what each is:

GAUSS_Light_8.0_Win.zip  [GAUSS Light 8.0 software]
GAUSS_8.0_Manual.zip     [all documentation zipped together]

Save the files that you download to either your root directory 
(usually C:) or a directory that you set up that has no spaces
in the title; there can be problems saving the files to a 
directory such as C:\Documents and Settings\&lt;username&gt;.

You *must* know the name of the files you wish to download.
DO NOT USE A BROWSER TO DOWNLOAD THE FILES. To download
the necessary files via command line ftp, do the following
at a terminal prompt:

1. Type the following at the ftp prompt:
    
   ftp ftp.aptech.com
       
2. Once you are in the ftp.aptech.com site, type: 

   anonymous 
   
   then when prompted enter your email address as the password.

3. Type the following at the ftp prompt to get the files 
   (ftp&gt; represents the ftp prompt you should see, do not type that): 

  ftp&gt; get 
 (remote-file) /outgoing/GAUSS_Light_8.0_Win.zip 
 (local-file) GAUSS_Light_8.0_Win.zip
  ftp&gt; get 
 (remote-file) /outgoing/GAUSS_8.0_Manual.zip 
 (local-file) GAUSS_8.0_Manual.zip
  ftp&gt; bye

Approximate file sizes
----------------------
8.8 MB GAUSS_Light_8.0_Win_32.zip
8.5 MB GAUSS_8.0_Manual.zip

========================================================================
========================================================================

Please note that files can only be downloaded via COMMAND LINE FTP, not
a browser (such as Internet Explorer, Netscape, Firefox, etc.).  You
must use a command window to download the files.  To open a command
prompt window, click on Start, then Run, and type cmd.

GAUSS Light 8.0 for Mac Universal
---------------------------------

Below is a list of files that you may wish to download and
what each is:

GAUSS_Light_8.0_Mac_OS_Xu.dmg  [GAUSS Light 8.0 software]
GAUSS_8.0_Manual.zip           [all documentation zipped together]

Save the files that you download to either your root directory 
(usually C:) or a directory that you set up that has no spaces
in the title; there can be problems saving the files to a 
directory such as C:\Documents and Settings\&lt;username&gt;.

You *must* know the name of the files you wish to download.
DO NOT USE A BROWSER TO DOWNLOAD THE FILES. To download
the necessary files via command line ftp, do the following
at a terminal prompt:

1. Type the following at the ftp prompt:
    
   ftp ftp.aptech.com
       
2. Once you are in the ftp.aptech.com site, type: 

   anonymous 
   
   then when prompted enter your email address as the password.

3. Type the following at the ftp prompt to get the files 
   (ftp&gt; represents the ftp prompt you should see, do not type that): 

  ftp&gt; get 
 (remote-file) /outgoing/GAUSS_Light_8.0_Mac_OS_Xu.dmg 
 (local-file) GAUSS_Light_8.0_Mac_OS_Xu.dmg
  ftp&gt; get 
 (remote-file) /outgoing/GAUSS_8.0_Manual.zip 
 (local-file) GAUSS_8.0_Manual.zip
  ftp&gt; bye

Approximate file sizes
----------------------
13.9 MB GAUSS_Light_8.0_Mac_OS_Xu.dmg
 8.5 MB GAUSS_8.0_Manual.zip
</pre>
<!--
Below is a list of files that you may wish to download and
what each is:

GAUSS_8.0_Win_32.zip     [GAUSS 8.0 software]
GRTM_8.0_Win_32.zip      [GAUSS Run-Time Module]
GAUSS_8.0_Manual.zip     [all documentation zipped together]
GAUSSplot_8.0_Win_32.zip [GAUSSplot 8.0 software]
gptools.zip              [free package containing additional procedures]
gptools.pdf              [GAUSS Tools pdf]
LICENSE.txt              [license agreement]
gaussplot8.0.pdf         [GAUSSplot Manual]
gpcookbook.pdf           [GAUSSplot Cookbook]
tpum.pdf                 [GAUSSplot User's Guide]
-->
</li>
<li>
Syntax highlighting is available for <a href="http://www.textpad.com/add-ons/files/syntax/gauss.zip">TextPad</a> and (my crude effort) for <a href="http://www.american.edu/econ/notes/gauss.vim">Vim</a>.
</li>
<li>
As late as version 6,
there is an error in quantile() that affects computation of the median.
Fix this yourself, or use median() instead.
To fix it, you can use the following code,
suggested on the 'gaussians' list by Ron Schoenberg:
<pre><code>
proc quantilenew(x,e,a,b,c,d);
    local w, wt, f, r, i, z;

    if minc(e) &lt; 0 or maxc(e) &gt; 1;
        errorlog "Inadmissable quantile levels";
        if not trapchk(1);
            end;
        else;
            retp(error(0));
        endif;
    endif;

    w = a + (rows(x) + b) * e;
    wt = floor(w);
    f = c + d*(w - wt);

    if wt == 0 or wt == rows(x);
         errorlog ftos((maxc(1/minc(e)|1/(1-maxc(e)))),"*.*lf",1,0) 
                   $+ " rows required for this level";
         if not trapchk(1);
             end;
         else;
             retp(error(0));
         endif;
    endif;

    r = zeros(rows(e),cols(x));
    i = 1;
    do until i &gt; cols(x);
        z = sortc(x[.,i],1);
        r[.,i] = z[wt] + f .* (z[wt+1] - z[wt]);
        i = i + 1;
    endo;

    retp(r);
endp;
</code></pre>
</li>
<li>
GAUSS now has procedures for integrating over an infinite support.
Documentation can be found in the file, inthp.src.  
<pre>
** ===========================================================================
**   Procedure     Format                       Purpose                 Line
** ===========================================================================
**   inthp1   y = inthp1(&amp;f,pds,ctl);   integration over -inf,+inf
**   inthp2   y = inthp2(&amp;f,pds,ctl,a); integration over a, +inf non-oscil
**   inthp3   y = inthp3(&amp;f,pds,ctl,a); integration over a, +inf oscill
**   inthp4   y = inthp3(&amp;f,pds,ctl,c); integration over a, b
** ===========================================================================
</pre>
</li>
<li>
To transform part of a multi-dimensional array to a matrix:
first transpose the array with <code>atranspose</code>, 
so that the two dimensions that you want in your matrix are in the two last dimensions of the array.
Then extract the matrix with <code>getmatrix</code> using the appropriate locator.  
</li>
<li>
Representing infinities:
__INFn &lt; x &lt; __INFp for all real numbers x,
and the usual "extended" real number properties apply.
(Note the <em>double</em> underscore for these special constants.)
</li>
<li>
If you need to trap an error so your program can continue after an error is detected,
use the <code>trap</code> and <code>scalerr</code> commands.
(See the example for 'scalerr' in the GAUSS Command Reference.) 
</li>
<li>
GAUSS provides more than one command for singular value decomposition.
Ron Schoenberg comments:
"If you are having problems with svd1, switch to lapsvdusv.  Svd1 is an older
but faster version based on Eispack source code.  Lapsvdusv (as well as
other lap* functions) are built on the more recently developed, more
advanced Lapack source code.  They are somewhat slower than the old
functions however, and that is why the older functions have been kept in
GAUSS."
</li>
<li>
To raise a negative number to a non-integral power,
use <code>complex(b,0)^x</code>,
where <var>b</var>&lt;0 is the base and <var>x</var> is the exponent.
</li>
<li>
You can create a 4&times;4 matrix of null strings as <code>let string a[4,4]="";</code>.
But what if the dimensions <var>r</var>, <var>c</var> are not known ahead of time?
Then use <code>a=""$+zeros(r,c);</code> instead.
</li>
<li>
Version 6 introduced a variety of new functions for working
with Excel files, including a function for computing the terminating 
column: xlsGetSheetCount, xlsGetSheetSize, xlsGetSheetTypes, xlsMakeRange, xlsReadm, xlsReadsa, xlsWrite, xlsWritem, xlsWritesa.  Note that the function xlsMakeRange computes the terminating column.
</li>
<li>
Aptech provide an ODBC database connectivity kit free to registered users.
It works with SQL statements.
Contact <a href="mailto:support@aptech.com">support@aptech.com</a> for the current URL.
</li>
<li>
Graphs:
GAUSS allows the user to set the viewer application via the _pvwr global.
The default on Unix/Linux is ghostview; on Windows it's vwr.exe.
When you use tgauss to batch process your GAUSS program,
you may want to to suppress the auto-exec viewer functionality: just set _pscreen=0.
If your program draws several graphs,
the default for GAUSS 3.6+ is that only the last one is accessible in the TKF file viewer.
GAUSS draws each over the previous one.
To get GAUSS to tile the graph windows (as in previous versions)
<br /><code>
call setvwrmode("many");
</code><br />
at the top of your command file.
To return to putting all graphs in a single window 
(for example, to produce an "animated" effect),
<br /><code>
call setvwrmode("one");
</code><br />
Note that if you do not like the default colors
for the lines you can change them:
see the help for <code>_pcolor</code>.
If you do not like the default colors
for the graph characteristics (ticks, frame, labels, background, etc)
you can change them:
see the help for <code>_pmcolor</code>.
</li>
<li>
You can save GAUSS plots in Encapsulated PostScript (<acronym class="help" title="Encapsulated PostScript">EPS</acronym>) format.
Graph conversion is determined the the global variable <tt>_pcmdlin</tt>.
To convert a graph into a ps file (flag -c ) stored in
"c:\filename.eps" (flag -cf ), include the line
<br />
<code>
_pcmdlin = "-c=1 -cf=c:\\filename.eps";
</code>
<br />
in your program right before creating the graph.
(Note the double backslash.)
Alternatively, in the window displaying a GAUSS graph, pick <kbd>File</kbd>, <kbd>Convert</kbd>, <kbd>PostScript</kbd>.
Then search your disk for <tt>cvt*.eps</tt> to find your new .eps file.
(The filename and other parameters are configurable in pqgrun.cfg, which you should definitely take a look at.
For example, you need to set <tt>cvt_color = RGB</tt> if you want color graphs.)
<br />
As of GAUSS 7,
I noticed that _pcmdlin is not documented.
This suggests that you need to set the .tkf file names by setting the <code>_ptek</code> global,
and then use the tkf2eps function to convert the .tkf files to Encapsulated Postscript.
The syntax is: <code>ret = tkf2ps("mytekfile.tkf", "myepsfile.eps");</code>
(see the GAUSS Command Reference).
</li>
<li>
GAUSS handles complex numbers.
For example, you can produce the complex number 2-3i with the code
<code>i = sqrt(-1);x=2-3*i;</code>.
Note that GAUSS does not set the value of <var>i</var> by default;
and you can pick any variable you want for this purpose.
</li>
<li>
In the <code>for</code> command in GAUSS the loop indicator is not a floating point.
Up to v.3.2.44, you need a hack if you want to pass the loop indicator to a procedure
(e.g., to convert it to a character value). For example, the following code works.
<pre><code>
  for i (1,10,1);
    j= i;
    print $ftocv(i+0,8,0) $ftocv(j,8,0);
  endfor;
</code></pre>
but it won't if you just pass i (or, oddly, 0+i).
(In order to get a fast loop, the loop indicator is given special status in the compiled code and is not simply a float.
The work-around generates some extra machine code that solves the problem.
See <a href="http://www.aptech.com/AS_supportMF.html">Aptech's bug page</a> for details).
</li>
<li>
As of version 3.6,
the use of <tt>for</tt> loops is not safe in <em>recursive</em> procedures.
This is supposed to be fixed in version 3.7 or later.
</li>
<li>
If your computations should not produce complex numbers,
turn complex numbers off by calling sysstate(8,0).
This will cause a fatal error if log, ln, or sqrt, are passed negative arguments.
If you expect real results from a procedure that can produce complex values (e.g., fft),
force the matrix to be real like this:
<code>
if abs(imag(x)) &le; 1e-12 ;
x = real(x);
endif;
</code>
For real symmetric matrices,
be sure to compute eigenvalues with <code>eigh</code> instead of <code>eig</code>:
this guarantees real eigenvalues and is much faster than <code>eig</code>.
Furthermore, if you use <code>eig()</code> for a real symmetric matrix,
rounding error in the calculations will nearly always produce complex
eigenvalues with imaginary parts that are very small.
</li>
<li>
There is something of a problem with the inverse ChiSquare function <tt>cdfchii</tt> through GAUSS 4.0 and possibly later.
Test with the following code snippet:
<code>cdfchii(0.9998,13);</code>
As one might expect, the same problem arises for the inverse gamma function.
Test with the code snippet <code>2*gammaii(13/2,0.9998);</code>
</li>
<li>GAUSS can generate .ps or .eps files.
If you want to add these to a Web document,
use ghostscript to convert to a portable anymap .ppm
file, then use
<a href="http://www.uni-frankfurt.de/doc/man/hpux">ppmtogif</a> to convert to gif.
</li>
<li>
If you are using the Windows version of GAUSS and
you are using OPTMUM, set __optmum = 1. To keep the
iterative information from going to an output file, set
output off before calling Optmum and then turn it back on
after the Optmum returns.  For better screen output when
__optmum = 2, set the font to "terminal"  (there's a font
menu in the Gauss window).
</li>
<li>To determine if a variable holds numeric or character
value is to do a  string comparison (it works with character but not with numeric).  For example:
<br />
<code>
let x1 = 4;
let x2 = a;
<br />
s1 = "" $+ x1;
s2 = "" $+ x2;
<br />
if (s1 $== x1); "ok"; endif;
if (s2 $== x2); "ok"; endif;
<br />
</code>
Only the second equivalence (s2 $== x2) is true.
</li>
<li>
GAUSS 3.5 installation: Aptech advises you to put the license file into the \Gauss35\Flexlm.
However, as soon as Gauss35 starts up, it begins looking for
the license file in the \Gauss35 directory.
Make sure you do not have an old license file there; it can cause a lot of trouble.
</li>
<li>
To get nice looking output from, e.g., Maxlik,
open a DOS window before calling the program. E.g.,
<br />
call DOSWinOpen("Your Title Here", error(0));
<br />
{x,f,g,cov,ret} = maxlik("tobit",0,&amp;lpr,x0)); @or whatever@
<br />
DOSWinCloseall;
<br />
(Unfortunately the DOSWinOpen will cause GAUSS for Windows 3.5 (up to Kernel rev.
3.5.17, GUI rev. 3.5.14 to shut down.)
</li>
<li>
Up through GAUSS 3.5, there is a bug in the polyeval() procedure that prevents it from calculating matrix polynomials.
The bug is easily fixed.
Just open the file poly.src and change the line
<br />
            <tt>y = y * x + diagrv(zeros(rc,rc),c[i]);</tt>
            <br />to
            <br />
            <tt>y = y * x + diagrv(zeros(rx,rx),c[i]); @changed rc to rx@</tt>
</li>
<li>
Up through GAUSS 3.6.20,
if a space is placed immediately after previously
#define'd flag in #ifdef statement, a code between
#ifdef-#endif is not compiled. For example, the
following code
<pre>
#define A
print "---";
#ifdef A 
/*space ^ */
/*here  | */
   print "A";
#endif
print "===";
</pre>
yields
<pre>
---
===
</pre>
as its output.
</li>
<li>
In order to assign values to a sequence of names,
use <tt>varput()</tt> and <tt>ftocv()</tt>.
For example,
<pre><code>
for i(1,5,1);
  varput(eye(i),"x"$+ftocv(i,1,0));
endfor;
</code></pre>
</li>
<li>
It is possible to call GAUSS from a batch file,
using tgauss.exe.
Since tgauss doesn't use a user interface,
and can be much faster.
Just create a dos batch file containing lines like
<code>c:\gauss\tgauss.exe -b c:\mypath\myfile.gau</code>
where you need to adjust the paths appropriately.
The <code>-b</code> flag is used to call GAUSS in batch mode.
Save the batch file (e.g., as filename.bat).
As with any batch file, you can double click it to run it
or run it from the command line.
</li>
<li>
Suppose you want to print a large matrix to a text file.
You may be able to just reset 'outwidth' to provide the needed line length,
but outwidth has a maximum value.
If your matrix is too big for this,
convert the matrix into a string array using ftostrC and then write it to a file using fputst.
Ron Schoenberg provided the following example (given the matrix <var>x</var>):
<pre><code>
    sa = ftostrC(x,"%8.4lf");
    fp = fopen("matrix.asc","w");
    call fputst(fp,sa);
    fp = close(fp);
</code></pre>
</li>
</ol>



<h3 id="aspellhints">Aspell user hints.
</h3>

<div class="boxed">
Installation hints for Windows users:
Go to <a href="http://aspell.net/win32/">http://aspell.net/win32/</a>
and get the setup program, available as a complete installer.
Run the setup program.
Next get and install the a dictionary (e.g., the English dictionary).
Now you are read to run aspell.  E.g., at a command window type
<code>c:\programs\aspell\bin\aspell check c:\temp.tex</code> 
(assuming that's where you put it, of course).
You may want to change your path so that aspell is in it.
<br />
Running Aspell from Vim:
To run aspell from Vim, just add a mapping to your _vimrc or .vimrc file.
Here are two examples.  The first assigns spell checking to the familiar F7 key.
<pre><code>
map &lt;f7&gt; &lt;esc&gt;:w&lt;cr&gt;:!aspell check %&lt;cr&gt;:e! %&lt;cr&gt; </code></pre> (Use the complete path if you didn't put aspell in your path).  Note that if you take this approach the changes are permanent! (I.e., you cannot "undo" them.)  Leave out the last command if you want to be able to change your mind.
Here is a slightly different version.
<pre><code>
map &lt;Leader&gt;s &lt;esc&gt;:w&lt;cr&gt;:!aspell --dont-backup -c %&lt;cr&gt;:e! %&lt;cr&gt;&lt;cr&gt; </code></pre>
To understand these,
see the Aspell and Vim helpfiles!
In either case, make sure aspell is in your path or use the fully qualified file name.
</div>

<h3 id="command_hints">Windows command shell hints.</h3>

<div>
Redirection:
see <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true">Microsoft's documentation</a>.
I often need to redirect all script output to a text file,
both stdout and stderr.
Example:
<pre>
c:\Python27\python.exe -c "import scipy;scipy.test()" &gt;c:\file.txt 2&gt;&amp;1
</pre>
</div>
<!-- c:\Python27\python.exe -c "import scipy;scipy.test()" >c:\temp\temp.txt 2>&1 -->

<h3 id="pyx_hints">PyX user hints.</h3>

<div>
Installing PyX from <a href="#vcs">SVN</a> gets you the most recent changes and is trivially easy.
(Preliminary: install <a href="#vcs">SVN</a>.)
At the command line, create a build directory with
<tt>svn co https://pyx.svn.sourceforge.net/svnroot/pyx/trunk/pyx pyx</tt>
and then change to your new <tt>pyx</tt> directory and enter <tt>setup.py install</tt>.
</div>

<div>
PyX will produce EPS files with negative bounding box parameters.
This is perfectly legal but confuses some applications.
In particular, LaTeX users of dvipdfm may see a clipped figure.
Fixing this is simple:
ask PyX to write your figure with a specified
<a href="http://pyx.sourceforge.net/manual/node20.html">paperformat</a>.
E.g.,
<pre><code>
mygraph.writeEPSfile("c:/mydir/myfig.eps",paperformat=pyx.document.paperformat.Letter)
</code></pre>
</div>

<div>
One lovely use of PyX is to <a href="http://pyx.sourceforge.net/manual/epsfile.html">include an existing EPS file</a>
and add things to it (e.g., LaTeX text, or JPEG graphics).
When you write out the result with <a href="http://pyx.sourceforge.net/manual/node20.html">writeEPSfile</a> method of your canvas,
be sure to set <code>bboxenlarge=False</code> to ensure a "tight" bounding box.
</div>

<p>
For 2-D data plots,
Titus Winters has written a nice <a href="http://www.cs.ucr.edu/~titus/pyxTutorial/">PyX tutorial</a>.
</p>

<p>
Be sure to see the <a href="http://pyx.sourceforge.net/examples/index.html">examples</a>
and <a href="http://pyx.sourceforge.net/gallery/index.html">gallery</a>
on the PyX website.
I provide a <a href="http://www.american.edu/econ/notes/pyx_shadedintegral.py">heavily commented elaboration of the shaded integral example</a>.
</p>

<p>
For a simplified interface to PyX,
you can add <a href="http://www.physik.tu-dresden.de/~baecker/python/pyxgraph.html">PyXgraph</a>
or, if you would like an interactive command line interface,
<a href="http://www.pyxplot.org.uk/">PyXPlot</a>.
For geometry, <a href="http://kib2.free.fr/geoPyX/geoPyX.html">geoPyX</a> is limited but useful.)
</p>



<h3 id="miktexhints">MiKTeX user hints.</h3>
<div>
MiKTeX comes with dvipdfm configured as
<pre>
D "mgs.exe -q -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.2 -dUseFlateCompression=true -dNOPAUSE -sOutputFile=\"%o\" \"%i\" -c quit"
</pre>
Some applications (e.g., PyX) produce negative bounding boxes.
(See <a href="#pyx_hints">Pyx hints</a> for a PyX solution.)
While perfectly legal,
this creates a problem for dvipdfm.
During conversion to PDF,
the EPS files are clipped at the papersize boundary rather than the figure boundary.
I don't know how to force pdfwrite to behave nicely,
and epstopdf does not work because it intentionally alters the bounding box for the PDF file.
You can try it though by changing the MiKTeX configuration to:
<pre>
D "epstopdf --outfile=\"%o\" \"%i\" "
</pre>
</div>

<div>
If you are generating PDF files directly,
you can also feed PDF images directly to dvipdfm using specials:
<pre><code>
\begin{figure}[ht]
	\special{pdf:image (mydir/myfile.pdf)}
\end{figure}
</code></pre>
</div>


<h3 id="tphints">TextPad user hints.</h3>

<h4>Adding a program as a Tool:</h4>
<ol>
<li>
From TextPad's <tt>Configure</tt> menu,
select <tt>Preferences</tt>.
</li>
<li>
Click on <tt>Tools</tt>, then
click on the <tt>Add</tt> button, then
select <tt>Program...</tt>
</li>
<li>
The "Select a File" window pops up.
Select the executable file (.exe) that
you want to add as a tool.
</li>
<li>
Click on <tt>Apply</tt>.
Double click on "Tools" and you should see your executable file listed as a tool.
Click on it, and you will see some dialog boxes.
Make sure they are correctly filled,
being especially careful with the "Parameters" box.
(You will find it useful to look at TextPad's help
on Tool Parameter Macros.)
</li>
</ol>

<h4>Adding TeX as a Tool (thanks to Alan Cibils):
</h4>

<ul>
<li>Add TeX to your Tools by following the directions for adding a program as a Tool.
  <ul>
  <li>emTeX users will add tex386.exe, which they will find in the <tt>emtex/bin</tt> folder.
  </li>
  <li>MikTeX users will add <tt>texify.exe</tt> (recommended) or <tt>latex.exe</tt> which should be in the <tt>texmf\miktex\bin</tt> folder
  </li>
  <li>TrueTeX users will add <tt>Initex32.exe</tt> which should be in the <tt>SWP3\TCITeX\TrueTeX</tt> folder.
  </li>
  </ul>
</li>
<li>In the dialog boxes of the final step,
replace <tt>$File</tt> in the <tt>Parameters</tt> box with
<tt>&amp;latex $FileName</tt>.
(MikTeX users can simply use <tt>$FileName</tt>.)
Click on "Apply"
</li>
</ul>

<p>To LaTeX (the disk copy of!) your current document, select your TeX from the "Tools" pull-down menu.
<br />
IMPORTANT: When you LaTeX a document in TextPad, a <tt>Command Results</tt> document is opened.
When LaTeX finishes executing, it displays the message:
Process completed with exit code 1.
<strong>
YOU MUST CLOSE THIS WINDOW AFTER EVERY RUN.</strong>
Failure to do this will cause subsequent LaTeX or BibTeX runs to hang.
</p>

<p>
To avoid the afore mentioned problem, I recommend running MikTeX as a DOS command, which can also be done as a TextPad tool.
If you decide on this option, go to the TextPad menus <tt>Configure, Preferences, Tools</tt>.
Click on <kbd>add</kbd> and select <kbd>DOS Command</kbd>.
A window will appear in which you type the full path to the
command you wish to execute. For example, for MiKTeX  type:
<br />
<tt>
c:\texmf\miktex\bin\texify.exe $BaseName
</tt>
(If you use the default MiKTeX installation, you do not need a fully qualified path name.)
<br />
Click <tt>OK</tt>, then <tt>Apply</tt>,
then go to the tool you just added
(it should be listed under Tools when you expand it)
and make sure to <em>UNcheck</em> the "capture output" box.
<br />
If you do all of this, then when you select the tool, a DOS window will pop open and show you the execution results. This is useful for when you have compilation errors,
you can hit enter, "X" or whatever,
whereas the other way you can't.
<br />
Older versions of TextPad have a small bug:
the DOS window closes upon the end of execution of your tool, whether the close window box is clicked or not.
</p>



<h4>Adding  <a href="ftp://tug.ctan.org/tex-archive/biblio/bibtex/8-bit/">BibTeX</a> as a Tool:
</h4>
<p>Note that the <tt>texify</tt> command offered in MikTeX automatically runs BibTex for you.
</p>
<ul>
<li>Add bibtex.exe or Bibtex32.exe to your Tools by following the directions for adding a program as a Tool.
</li>
<li>In the dialog boxes of the final step,
replace <tt>$File</tt> in the <tt>Parameters</tt> box with
<tt>$BaseName</tt>.
Click on "Apply"
</li>
</ul>
<p>To LaTeX your current document, select Bibtex32 from the "Tools" pull-down menu.
<br />
IMPORTANT: When you LaTeX a document in TextPad, a <tt>Command Results</tt> document is opened.
When LaTeX finishes executing, it displays the message:
Process completed with exit code 1.
<strong>
YOU MUST CLOSE THIS WINDOW AFTER EVERY RUN.
</strong>
Failure to do this will cause subsequent LaTeX or BibTeX runs to hang.
</p>


<h4>Add a .dvi viewer to your Tools, to view your LaTeXed document:
</h4>
<ul>
<li>Add your .dvi viewer to your Tools by following the directions for adding a program as a Tool.
  <ul>
  <li>emTeX users will probably choose to add dviwin2.exe.
  </li>
  <li>MikTeX users will probably choose to add <tt>yap.exe</tt>.
  </li>
  <li>TrueTeX users will probably choose to add <tt>Dvigdi32.exe</tt> which should be in the <tt>SWP3\TCITeX\TrueTeX</tt> folder.
  </li>
  <li>
  Mac users may use <a href="http://docenti.ing.unipi.it/~d9615/homepage/mac.html">TeXniscope</a>, MacDviX, or Mxdvi.
  </li>
  </ul>
</li>
<li>In the dialog boxes of the final step,
replace <tt>$File</tt> in the <tt>Parameters</tt> box with
<tt>$BaseName</tt>.
(TrueTeX users will need to use <tt>$UNIXDir/$BaseName</tt>.)
Click on "Apply"
</li>
</ul>
<p>To view your LaTeXed document, select your viewer from the <tt>Tools</tt> pull-down menu.
</p>


<h4>Since you can choose to have MikTeX produce .pdf files instead of .dvi files, you may wish to add the Adobe .pdf viewer to your Tools, to view your LaTeXed document:
</h4>
<ul>
<li>Download and install the free Acrobat Reader, and add it to your Tools by following the directions for adding a program as a Tool.
</li>
<li>In the dialog boxes of the final step,
replace <tt>$File</tt> in the <tt>Parameters</tt> box with
<tt>$BaseName.pdf</tt>.
Click on "Apply"
</li>
</ul>
<p>To view your LaTeXed document, select your viewer from the <tt>Tools</tt> pull-down menu.
</p>



<h4>Reassign Keyboard Short-Cuts</h4>
<p>Reassign Ctrl-e to WordRightEnd as follows:
choose Customize from the Configure menu,
select the Keyboard tab,
choose Cursor from the Categories list,
choose WordRightEnd from the Commands list,
type Ctrl+e in the Press New Shortcut box,
click Assign, and click OK.
You will then want to assign Ctrl+Shift+E to WordRightEndExtend.
</p>


<h3 id="mma-hints">User Hints: Mathematica</h3>

<p>
Get all secion header cells with <tt>Cells[CellStyle → {"Section"}]</tt>.
The result is a list of cell objects,
on which you can set any options by assigning to its <tt>CurrentValue</tt>:
</p>
<pre>
Do[
 CurrentValue[cell, ShowGroupOpener] = True,
 {cell, Cells[CellStyle → {"Section"}]}
]
</pre>

<div>
Using version control with Mma notebooks is a bit messy but can be made workable.
Set <tt>FileOutlineCache</tt> to False and <tt>TrackCellChangeTimes</tt> to False
in any notebook you want to put under version control.
<br />
Command approach:
<pre>
SetOptions[InputNotebook[],
 PrivateNotebookOptions → {"FileOutlineCache" → False},
  TrackCellChangeTimes → False
   ]
</pre>
<br />
Menu driven approach:
Open your notebook.
From Mathematica’s menus,
pick Format → Option Inspector.
Show the options for the Selected Notebook.
Under Notebook Options → Private Notebook Options,
search for FileOutlineCache and set the option to False.
Under Editing Options, search for TrackCellChangeTimes and set it to False.
Save your notebook.)
Preliminary to committing your changes, delete all your output cells and then save your notebook.
(You can use the menus or <tt>FrontEndTokenExecute["DeleteGeneratedCells"]</tt> for this.)
</div>

<h3 id="sw-hints">Scientific Notebook and Scientific Word user hints</h3>

<p>
On campus:
To fix font problems on the display,
make sure the Windows Multilingual Support is installed.
If that is not an option, go to Tools, User Setup, Font Mapping
and check the Use Symbol Font mapping box.
</p>

<p>
Be sure to learn the keyboard short-cuts:
see especially the help for Key Prefixes.
For example, you can logical negation as <kbd>ctrl-s,N</kbd> 
and the partial derivative sign (&part;) as <kbd>ctrl-s,d</kbd>.
(See the Help search.)
Also, I strongly recommend changing the default settings under Tools, UserSetup, Math:
set it so that two spaces switches to math and a space at the end of math switches to text.
</p>

<p>Be sure to visit Yngve Svendsen's <a href="http://swp.yngve.com/">
Scientific WorkPlace Unofficial Homepage</a>
(although I have had some connection difficulties).
</p>

<p>
<b>Graphics:</b> When using the JPGs or TIFFs,
edit the file tcispech.ini and change the setting for MaxGraphicsMemoryUsage.
Try doubling or tripling the default setting of 4000.

When using <acronym class="help" title="Encapsulated PostScript">EPS</acronym> graphics, save your document using the Portable LaTeX filter and change the options for the graphicx package to use dvips. The graphics will only appear when printing, but they should appear.
</p>

<p>
To use Scientific Word on the EagleNet,
you will first need to install some (non-executable) files on your computer
(which ought to have say 30Meg free disk space and 8Meg RAM);
do this by entering "enetupgr sword" (without the quotes) at the DOS prompt.
(Note: be sure to keep your macros in a <em>separate</em> file, which you \input in your preamble.)
Be sure to see the
<a href="http://swp.yngve.com/index.html">Scientific Workplace Unofficial Homepage</a>,
which include <a href="http://swp.yngve.com/technical/miktex01.html">instructions</a> on how to use MiKTeX with SWP.
</p>


<p>
You can get all the functionality of Scientific Word
except for the typesetting and associated TeX functions in
<a href="http://www.mackichan.com/snbk/default.htm">
Scientific Notebook</a> for Windows 9x and NT.
Many useful functions are in the
<a href="http://www.mackichan.com/products/freedwnld.html">
free Demo version</a>, although this version cannot print, save, or copy from read/write documents.
While you are on the AU campus, you are in luck:
Scientific Notebook is available as an EagleNet Application.
<br />
Users must first open EagleNet Applications.
(If you don't have EagleNet on your Start menu,
just pick Start, Run and the type `nal' in the dialog box.)
You should see a Math/Statistics/Research
folder on the left, in which you will find the
Scientific Notebook icon.
Double click the icon to run the program.
<br />
The first time you run the program, several system files
will be copied down to your hard drive before the program opens.
Each time after that initial setup the program will run
as soon as the icon is double-clicked.
The program is accessible to the major academic user groups
and all student users.
Since it is a 5-user license, you may occasionally find you have to wait  until someone logs off to use Scientific Notebook. I do not expect this to happen, but if it happens to you let me know and I will apply for more copies.
</p>


<h3 id="svn-hints">Subversion User hints</h3>

<p>
Subversion is easy to use and excellent for individuals and small groups.
Here is a <a href="http://www.clear.rice.edu/comp314/svn.html">ten minute tutorial</a>.
Windows users who prefer to avoid the command line can just use <a href="http://tortoisesvn.net/">TortoiseSVN</a>.
</p>

<div>
Remember your work cycle must be a very rigid UMUC sequence:
1. before you start work, *update*
2. *modify* your working copy (do your work, and test it)
3. *update* again (and resolve any conflicts)
4. as soon as possible, *commit* your changes
</div>

<div>
To work across platforms,
you must not use file or folder names that are illegal on any of the platforms.
Windows users cannot use the following (which are reserved device names):
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
They also cannot use these names followed by an extension, for example, NUL.txt or com1.png.
<br />
Suppose a contributor creates com1.png on a Mac and commits it to the Subversion repository.
When Windows users try to update, the update fails horribly.
(How horribly? Unfixably. They will have to get a new checkout after the problem is fixed.)
The contributor of the file should ``svn rename`` it to a name legal for Windows,
and commit that change.
Then the problem for Windows users will go away.
<br />
Bottom line: never ever use such file or folder names!
</div>

<p>
<a href="http://ariejan.net/2007/07/04/how-to-resolve-subversion-conflicts/">How to resolve Subversion Conflicts</a>
</p>

<div>
Suppose you want to add a directory <tt>mydir</tt> under version control,
but it contains a bunch of files you do <em>not</em> wish to track.
You can add the directory but not the files as follows:
<code>svn add --non-recursive mydir</code>.
</div>

<p>
One disappointing thing: it would be nice to add a directory
and all its files <em>except</em> those matching the <code>svn:ignore</code> property.
Subversion does not currently support this.
Here is one <a href="http://svn.haxx.se/users/archive-2006-02/0678.shtml">work around</a>.
</p>

<p>
You can set an editor (e.g., for commit messages and property editing)
in the Subversion <code>config</code> file.
On Windows you should be able (after installing Subversion) to find it here:
<code>\Users\YourUserName\AppData\Roaming\Subversion</code>.
Search for <tt>editor-cmd</tt> and follow the instructions.
(On Windows, I am currently using <code>editor-cmd = C:/programs/Vim/vim74/gvim.exe -f</code>.
If you use a path with spaces in it, you will have to quote it.)
</p>

<p>
Once you ensure that Subversion has access to a text editor,
you can edit the list of patterns it will ignore in any directory.
E.g., <code>svn propedit svn:ignore .</code> (note the final period)
will edit the patterns for the current directory.
</p>

<p>
<tt>svn diff -r HEAD myfile</tt> shows differences between <tt>myfile</tt> and the repository.
<tt>svn status --show-updates</tt> shows you which files in the repository have changed.
</p>

<p>
It is useful (and probably best practice) for any plain text files to
<code>svn propset svn:eol-style=native *filename*</code>.
This is not the default, but each user can make it a personal default by editing
the <code>[autoprops]</code> of their Subversion <code>config</code> file.
From Subversion 1.8 onwards, it can be set as a default at the repository level
with <a href="http://blogs.collab.net/subversion/the-road-to-repository-dictated-configuration-day-2-autoprops">Repository Dictated Configuration</a>.
</p>

<p>
It is a good idea to lock binary files, to help ensure only one person changes them at a time:
<code>svn propset:needs-lock yes *filename*</code>.
</p>

<h3 id="reST_hints">Docutils User hints</h3>

<div>
If you are using rst2latex,
it will include the following in your header:
<code> \usepackage[T1]{fontenc} </code>.
Unfortunately, on its own, this will probably lead to the
use of bitmap fonts and thus "fuzzy" screen output.
According to Guenter Milde,
there are several reasons for this choice.
<ul>
<li> 
T1 is the recommended (by the LaTeX team) font encoding. (OT1 is the
default only because of the TeX policy of no changes to the defauls,
not even improvements/fixes.)
</li> 
<li>
Using the advantage of the several output options for a common source,
documents for web viewing are best produced with the HTML writer and
the print version with the LaTeX writer.
</li>
<li>
While the bad look will be visible at first glance,
use of the traditional OT1 encoding will make text extraction faulty.
(That is, it creates problems with search and extraction of text that
contains characters outside the ASCII range.)
</li>
</ul>
The real question is what to do about it.
The recommended workaround is to select a T1-encoded "Type 1" (vector) font.
For example you can use Latin Modern either by adding it to your LaTeX style sheet
(<code>\usepackage{lmodern}</code>)
or by using a Docutils command line argument
(<code>--stylesheet=lmodern</code>).
Another popular solution is the "Times/Helvetica/Courier" combination,
which you can get by adding the following to your style sheet:
<pre>
\usepackage{mathptmx}            % Times for serif and math
\usepackage[scaled=.90]{helvet}  % downscaled Helvetica for sans serif
\usepackage{courier}             % Courier for teletype (mono-space)
</pre>
or with the following Docutils command line options:
<code>--documentoptions="scaled=.90" --stylesheet="mathptmx,helvet,courier"</code>.
<br />
You can also just turn it off with the following Docutils command line option:
<code>--font-encoding=OT1</code>
(or even <code>--font-encoding=""</code>).
</div>


<h3 id="jabref_hints">JabRef User hints</h3>

<div>
<ol>
<li>
Go to http://jabref.sourceforge.net/ and click Web Start,
to start the JabRef reference manager.
</li>
<li>
To enter a new article, click the green + and click Article.
To enter a new working paper, click the green + and click TechReport.
</li>
<li>
Multiple authors are separated by <tt>and</tt>
(*not* by commas).
</li>
<li>
Do not put quotes around titles.
</li>
<li>
Use two hyphens for page number ranges (e.g., 99--101).
For page numbers, put only the page ranges (e.g., no "pp.").
</li> 
<li>
For articles you will often have volume and issue number data,
like <tt>vol. 2 no. 1</tt> or <tt>2(1)</tt>.
The volume is entered on the <code>Required</code> tab
and the issue number is entered on the <code>Optional</code> tab.
</li>
Months are entered like this: #jan#, #feb#, #mar#, etc.
(Three letter abbreviations bracketed by hash marks.)
<li>
The <tt>url</tt> field is under the <code>General</code> tab.
</li>
<li>
If you are missing information for any Required fields,
you can often get the missing information from RePEc
(http://ideas.repec.org/) if you do a Google search on
the title.
</li>
</ol> 
</div>



<h3 id="mpl-hints">Matplotlib User Hints</h3>

<p>
Matplotlib is included in many Python distributions,
including Enthought Canopy.
If you install it your self,
be sure to read the <a href="http://matplotlib.org/users/installing.html">installation instructions</a>.
Before installing Matplotlib,
you will certainly need to install <a href="#numpy">NumPy</a>.
</p>

<p>
To get the most from Matplotlib,
you need to clearly understand the difference
between a figure instance and an axes instance.
<br />
A figure instance the basic container for an entire chart,
like a figure in a journal article.
A figure instance can contain multiple axes instances,
each of which can be used for plotting or drawing.
<br />
We can call the <code>add_subplot</code> method to add
non-overlapping axes instances to our figure.
(But if you call <code>add_subplot</code> again
in a way that overlaps your previous subplot,
this **replaces** your previous axes in the current figure.)
</p>

<pre> 
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1 = fig1.add_subplot(1,1,1)
#now draw on ax1
fig2 = plt.figure()
ax2a = fig2.add_subplot(2,1,1)
#now draw on ax2a
ax2b = fig2.add_subplot(2,1,2)
#now draw on ax2b
</pre>

<p>
You can use the <code>subplots</code> convenience function
to do figure and axes creation at one go.
</p>

<pre>
fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2)
</pre>

<p>
Here is a simple example for creating a figure
and displaying it onscreen.
(For completeness, we illustrate the explicit choce of
a GUI “back end”, although this is usually not necessary.)
Note the hierarchical approach:
the <tt>pyplot</tt> interface creates the figure object,
the figure object creates the axes objects,
and the axes objects create the other objects
(including, implicitly, the axis objects).
</p>

<pre>
# preliminaries
import matplotlib
matplotlib.use('TkAgg')  #note choice of GUI backend!
import matplotlib.pyplot as plt
# create a new figure
fig = plt.figure(1)
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3],'r-')
ax.set_title('Easy Line Plot')
# display your figure onscreen
plt.show() 
</pre>

<p id="mpl_no_gui">
Here is a simple example for creating a figure
and saving it, without displaying it onscreen.
(I.e., no GUI.)
</p>

<pre>
# preliminaries
import numpy
import matplotlib
matplotlib.use('Agg')  #note choice of backend: no GUI!
import matplotlib.pyplot as plt

#create some artificial data for this example
x, y = numpy.random.rand(2,50)  #the data (50 points)
# create a new figure 
fig = pyplot.figure()
#add an axes instance to draw on
ax = fig.add_subplot(111)
#do your drawing
ax.plot(x, y, marker='.', linestyle='', markerfacecolor='blue')
ax.set_title('Scatter dots')
ax.set_xlabel('x')
ax.set_ylabel('y')
# save figure to file
fig.savefig('/temp/myfig.png', dpi=96)
</pre>

<p id="mpl_no_plt">
Matplotlib's pyplot facilities are convenience facilities for the user with modest needs.
For some examples (e.g., embedding Matplotlib in other applications)
it is important not to use these facilities.
In this case,
you can altogether avoid using pyplot,
but you will need to handle figure and canvas creation yourself.
</p>

<pre>
# example by John Hunter.
from matplotlib.backends.backend_svg import FigureCanvasSVG
from matplotlib.figure import Figure
fig = Figure()
ax = fig.add_subplot(211)
ax.plot([1,2,3])
ax.set_xlabel('time')
canvas = FigureCanvasSVG(fig)
canvas.print_figure('myfile.svg')
</pre>

<p>
As another example,
here is our earlier example redone to be more fully object oriented.
</p>

<pre>
# preliminaries
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
# create a new figure
fig = Figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3],'r-')
ax.set_title('Easy OO Line Plot')
ax.set_xlabel('x')
ax.set_ylabel('y')
canvas = FigureCanvas(fig)
canvas.print_figure('temp.eps')
</pre>

<p>
All Matplotlib plotting functions trigger autoscaling.
This affect, e.g., setting the axes limits.
To prevent your limits from being overridden,
call xlim/ylim <em>after</em> any plotting functions.
Alternatively, you can turn autoscaling off:
<br />
<code>gca().set_autoscale_on(False)</code>
</p>

<div>
Subplots are pretty close to each other:
if you stack two and label both horizontal axes,
the top plot's label overlaps the bottom plot's axis.
Fix this by using <a href="http://matplotlib.sourceforge.net/matplotlib.figure.html#Figure-subplots_adjust"><code>Figure.subplots_adjust</code></a>,
like this:
<pre>
figure()
subplots_adjust(hspace=0.4)  # default: 0.2
subplot(211)
subplot(212)
</pre>
</div>

<p>
Fans of Edward Tufte may wish to look at <a href="http://hupp.org/adam/weblog/2007/09/03/etframes-applying-the-ideas-of-edward-tufte-to-matplotlib/">etframes</a>.
</p> 

<p id="mpl_set_aspect">
Note that if you <tt>set_aspect</tt> on a axes instance you
will still need to <tt>apply_aspect</tt> as well
(or call <tt>draw</tt>).
</p>

<p id="mpl_oo">
Matplotlib is capable of fully object oriented graphics programming.
There is a very useful <a href="http://matplotlib.sourceforge.net/leftwich_tut.txt">tutorial</a>.
If you want to embed Matplotlib in a GUI,
you must use the object oriented API and <em>not</em> pyplot.
The Matplotlib website includes <a href="http://matplotlib.sourceforge.net/examples/">examples of embedding</a>.
(For example, <a href="http://matplotlib.sourceforge.net/examples/embedding_in_qt.py">embedding_in_qt.py</a>.)
</p>

<p>
<a href="http://agni.phys.iit.edu/~kmcivor/wxmpl/">wxmpl</a>
is supposed to be the best way to integrate Matplotlib into wx.
</p>

<div>
Changing Matplotlib backends:
you have to call 'use' before importing matplotlib.pyplot;
the backend choice must be set at the time of the matplotlib.pyplot import.
For example,
<pre>
import matplotlib
matplotlib.use('GTKAgg')
from matplotlib.pyplot import *
</pre>
</div>

<div>
If you need to control the placement of a Matplotlib figure,
you need to work a bit because it is "back end" dependent.
According to John Hunter, "the matplotlib Figure is
embedded in a FigureCanvas which is typically a GUI widget embedded in
a GUI Window. In the pylab interface, the canvas is managed by a
FigureManager, which has a window attribute on most of the backends."
He provides some examples.
<pre>
<code>
# GTK backend 
from pylab import * 
import gtk
figure(1)
plot([1,2,3])
manager = get_current_fig_manager()
# see gtk.Window class docs at
# http://www.pygtk.org/pygtk2reference/class-gtkwindow.html
manager.window.set_position(gtk.WIN_POS_CENTER) 
figure(2)
plot([1,2,3])
manager = get_current_fig_manager() 
# see gtk.Window class docs at
# http://www.pygtk.org/pygtk2reference/class-gtkwindow.html
manager.window.set_position(gtk.WIN_POS_NONE) 
show()
</code>
</pre>
Another user offered a WX example:
<pre>
<code>
# WX* backend (manager.window is a wxFrame)
# http://www.lpthe.jussieu.fr/~zeitlin/wxWindows/docs/wxwin_wxframe.html#wxframe
figure(1)
plot([1,2,3])
manager = get_current_fig_manager()
manager.window.SetPosition((100,100))
#or: manager.window.Centre()
show()
</code>
</pre>
Todd Miller offered a TkAgg example:
<pre>
<code>
# set the window position to X=200, Y=300
get_current_fig_manager().window.wm_geometry("+200+300")
</code>
</pre>
</div>

<div>
To get the
equivalent of gnuplot's <code>set xzeroaxis</code> and <code>set yzeroaxis</code>,
use <code>axhline()</code> and <code>axyline()</code>.
Prior to version 0.63,
Matplotlib does not have an equivalent of gnuplot's <code>set xzeroaxis</code>.
(This draws a horizontal line across the xrange at y=0.)
John Hunter explains how to achieve the same effect,
and it provides many insights into matplotlib.
"What you want to do is plot a line where the y coord is in data units and equal
to zero, and the x coord is in axes units and spans the xrange.  The
line stretches from left to right regardless of the xlimits.
Each axes provides a data transform and an axes transform, so that you
can specify lines/text/etc in either coord system; axes coords are 0,0
for lower left and 1,1 for upper right.  But what you want to do is
mix the data and axes transforms for x and y.  The transforms module
provides a helper function for this.  The following code is freestyle
(untested) but should work:
<pre><code>
from matplotlib.transforms import blend_xy_sep_transform
ax = gca()
trans = blend_xy_sep_transform( ax.transAxes, ax.transData)
plot([0,1], [0,0], transform=trans)
</code></pre>
</div>

<div>
You can set an arbitrary color for any matplotlib plot.
E.g., <code>pyplot.plot(d, f(d), color = (1,0,0))</code>.
</div>

<div>
To get rid of the redundant ticks on the top and right edges:
<pre>
ax = pyplot.gca()
ax.get_xaxis().set_ticks_postion('bottom') 
ax.get_yaxis().set_ticks_postion('left') 
</pre> 
</div>

<div>
Note that you should call <tt>show</tt> only once in a script.
But sometimes you want to alternate seeing plots and
doing computations.
See <a href="http://stackoverflow.com/questions/458209/is-there-a-way-to-detach-matplotlib-plots-so-that-the-computation-can-continue
">http://stackoverflow.com/questions/458209/is-there-a-way-to-detach-matplotlib-plots-so-that-the-computation-can-continue
</a> for a discussion.
</div>

<div>
In an Axes3D object,
the .xaxis and .yaxis refer to the axis for the draw space,
<em>not</em> to the the 3d projected axis.
The latter are .w_xaxis, .w_yaxis, and .w_zaxis.
(Thanks to Ben Root for pointing this out.)
</div>

<h3 id="eviews-hints">EViews User hints</h3>

<div id="eviews_bugs">
Eviews 6 appears to have some bugs and some annoyances:
<ul>
<li>
If you run a program that shows a graph and then creates and new page in your workfile,
the old page remains active. (Very serious!)
</li>
<li>
String concatenation does not work when string variables are used in commands.
</li>
<li>
Table copying to clipboard is very badly broken.
Tables can be copied to clipboard only as tab deliminted text.
This is almost useless: it does not reproduce the table formatting.
Space delimited text would be more useful.
RTF is clearly needed.
LaTeX would be helpful.
</li>
<li>
Table writing to disk is very badly broken.
The tab-delimited text export does not reproduce the table formatting
(e.g., of regression results).
It looks like this is essentially a CSV table with tabs substituted
for commas: is anyone actually using this format?
Space delimited text would be more useful:
at least it could be directly inserted in a document.
HTML export of user modified tables (e.g., of regression results) is buggy.
RTF export works OK:
one must assume this is the only option used by the EViews developers.
</li>
<li>
Text objects have no useful methods.
</li>
</ul>
</div>

<p>
Kawa offers a very useful collection of <a href="http://aris.ss.uci.edu/econ/personnel/kawa/codes/eviews.html">supplemental programs and data in EViews format</a>,
including the NBER historical series and the PENN World Tables.
</p>

<p>
EViews 5 can read and write <a href="http://www.eviews.com/eviews5/eviews5/ev5over.html#Formats">many data formats</a>.
</p>

<p>
Up to version 4,
the <code>save</code> command is not correctly documented in the EViews documentation.
If you provide a filename as an argument, it is really equivalent to <kbd>File.SaveAs</kbd>.
That is, it saves under the new name <em>and</em> changes the name of the current workfile.
In fact, as of version 4, this is the only way to change the name of a workfile in RAM.
</p>

<p>
In Eviews3, you could use <code>scat(r)</code> to get in a single graph
multiple scatter plots with their regression lines.  This is not possible in
EViews4, where the replacement <code>linefit</code> command only uses the first
two members of its group argument.
</p>
<p>
missing observations:
@obs(x[,s]) gives you the number of non-missing observations in x in the current sample or in sample "s" if the option is listed.
One can access the number of non-missing observations for a group with @comobs.
</p>

<div>
String substitution is very useful in EViews.
For example, you might write set a string variable, say <code>%param1</code>, equal to a complicated function of parameters, which recurs in a system estimation.
As a simple example:
<pre>
%param1 = "c(1) + c(2)"
system1.add y = c(1)* x1 + x2/({%param1})
</pre>
Oddly, string substitution only works for procs (commands) and not for assignments (using = ).
For example,
<pre>
scalar trythis = ({%param1})
</pre>
doesn't work.
(In this case, EViews will look for an object named c(1)+c(2) without evaluating the expression.)
</div>

<p>
Backwards compatibility:
Eviews 3 and EViews 4 are not fully compatible.
See the version 4 User's Guide page 532:
"A Note on EViews Backward Compatibility" and page 580/581: "Converting from Version 3 Sspace"
for some changes from version 3 to version 4.
Briefly:
</p>
<ol>
<li>
"makeendog" is changed to "makegroup"
</li>
<li>
"makestat" is changed to "makestats" (do not confuse with "makestate")
</li>
<li>
with solving models the assign statement is replaced by scenarios, and
the default scenario operates as if you had specified "assign @all _0" in
version 3; hence in version 4 endogenous variables are not overwritten but
new variables are created instead.
</li>
<li>
<tt>legend(s)</tt> becomes <tt>legend columns(1)</tt>
</li>
<li>
the r option for <tt>scat</tt> is not supported.
</li>
</ol>




<p class="boxed">
AU Econ students and Faculty:
<br />
You can access EViews on any networked campus computer.
Look in the Math/Stat/Research folder in the EagleNet Applications/NAL window.
Double click the EViews icon.
This should install a short-cut on your machine.
Note that this is a limited user license,
so you may be refused access to EViews during high usage times.
Since it is a 5-user license, you may occasionally find you have to wait  until someone logs off to use EViews.
I do not expect this to happen, but if it happens to you let me know and I will apply for more copies.
</p>

<h3 id="vimhints">Vim User hints</h3>

<p>
Vim is free software.
First get information about <a href="http://vim.sf.net/download.php">which files to download</a>, then
<a href="ftp://ftp.vim.org/pub/vim/">download it</a>.
Finally, if you are new to Vim,
get some <a href="http://vimdoc.sourceforge.net/">documentation</a>.
Be sure to do the Vim tutorial and to read the help for "navigation".
If you want additional documentation,
consider <em>Vi Improved&mdash;Vim</em> by Steve Oualline or
<em>Vim ge-packt</em> by Reinhard Wobst.
</p>

<p>
Windows installation:
<br />
To install Vim on Windows, get the <a href="http://vim.sourceforge.net/download.php#pc">self-installing Windows executable</a>.
Double click it and install where desired.
Installation creats a 'vim' directory.
Below that is a 'vimfiles' directory.
I recommend that Windows users who are new to Vim
i. copy my <a href="http://www.american.edu/econ/notes/ai_vimrc.vim">ai_vimrc.vim</a> attached file to their vimfiles directory,
and then 
ii.
look for the '_vimrc' file in the 'vim' directory
and add at the bottom of that _vimrc file
the following command:
<code>source $VIM/vimfiles/ai_vimrc</code>
</p>

<p>
Getting started:
<br />
Look for a file called <tt>vimtutor</tt>
or <tt>vimtutor.bat</tt>.
Set aside 20 minutes for the tutorial,
and then run the tutorial
(e.g., by clicking the file icon).
</p>

<p>
The Vim cursor stays in the viewing window,
in contrast with some Windows applications.
If you want to cursor down and then return to where you started,
set a mark before moving.  (See <code>:h marks</code>.)
But, if you want to be able to page down and then page back up to where you started,
use <code>ctrl-d</code> and <code>ctrl-u</code> rather than <code>Pg-Dn</code> and <code>Pg-Up</code>.
</p>

<div>
Python:
<br />
Vim cooperates with some scipting languages, including Python.
See <code>:help :python</code>, <code>:help python-examples</code>,
and especially <code>:help python-vim</code>.
Start with
<pre>
:python import vim
:py cb = vim.current.buffer
</pre>
Note that cb is now an iterable container of strings.
You can assign to the i-th line by assigning to cb[i].
</div>

<div>
MiKTeX:
<br />
With minimal effort,
Vim cooperates wonderfully with LaTeX.
Windows users should install MiKTEX and (before Vim 7, in any case) install aspell,
and then perhaps add my <a href="http://www.american.edu/econ/notes/miktexmenus.vim">MiKTeX menus</a> to the <tt>_gvimrc</tt> file.
</div>


<div>
enspchk:
<br />
After 2006, you will probably have Vim 7.0 or higher, which includes spell-checking.
Before version 7,
Vim does not come with a spell checker built in,
but a native Vim spellchecker is available:
<a href="http://vim.sourceforge.net/scripts/script.php?script_id=195">Charles Campbell's engspchk</a>.
The installation instructions he provides are a bit succinct,
so here is a more elaborate version.
<ol>
<li>
Download the script (version 42 or higher) to your vimfiles folder.
If it downloads with an odd extension, rename it.
E.g., I had to use the following command:
<br />
<code>
rename engspchk-v42.tar.gz.php engspchk.tar.gz
</code>
</li>
<li>
Unpack this file using any tools you want.
I will assume you are using Windows.
If you want to use excellent free tools get
'gunzip' and 'tar' from
<a href="http://gnuwin32.sourceforge.net/packages.html">http://gnuwin32.sourceforge.net/packages.html</a>.
I will assume you do this, and that you have run the
"setup" binaries from
<a href="http://gnuwin32.sourceforge.net/packages/gzip.htm">http://gnuwin32.sourceforge.net/packages/gzip.htm</a>
and
<a href="http://gnuwin32.sourceforge.net/packages/tar.htm">http://gnuwin32.sourceforge.net/packages/tar.htm</a>.
In this case you will unpack the downloaded script in three
steps.  At the command line, type the following three lines:
<pre><code>
gunzip engspchk.tar.gz
tar -oxvf engspchk.tar
delete engspchk.tar
</code></pre>
</li>
<li>
Check to make sure engspchk.vim is in your
vimfiles/plugin folder.  If not, find it and move it there.
</li>
<li>
Check to make sure you now have a vimfiles/CVIMSYN
folder.  If not, find the CVIMSYN folder and move it there.
Edit your _vimrc file to add the following line:
<br /><code>
let g:cvimsyn = "c:/programs/vim/vimfiles/CVIMSYN"
</code><br />
(or whatever is the correct path).
</li>
<li>
Check to make sure engspchk.txt is in your vimfiles/doc
folder.  If not, find it and move it there.
Generate your helptags for your spellchecker by
typing the following in Vim:
<br /><code>
:helptags c:\programs\vim\vimfiles\doc
</code>
</li>
<li>
Close Vim.  Next time you open it, you will
have spell checking.  To learn how to use it,
type in Vim the following:
<br /><code>
:h engspchk
</code><br />
The maps you need are a couple paragraphs into the help document.
(Remember \ee!)
</li>
<li>
You need to install <a href="http://www.tgries.de/agrep/">agrep</a>
if you want alternative spellings to be suggested.
</li>
<li>
Mouse support:
<br />
To use mouse maps for your spellchecking (very useful!),
you need to put in your _vimrc the following line:
<br /><code>
let g:spchkmouse=1
</code><br />
Unfortunately, I have had some trouble with this option.
First, this only seems to work at all with agrep installed,
in contrast with the documentation.  Second, even with
agrep installed I sometimes get very bad behavior.
For now, I recommend the default:
<br /><code>
let g:spchkmouse=0
</code><br />
If you turn on mouse support <em>and</em> use the console version of Vim (not gvim),
then you will need to make sure that Vim gets to see the mouse clicks as follows.
Right click on icon used to start your console.
Select  Properties/Options, and then uncheck both QuickEdit and Insert.
</li>
</ol>
</div>


<div>
<p class="boxed">
AU students and faculty:
<br />
You can access Vim on any on any PC with the Novell client configured for AU's network
(student machines often have only TCPIP -internet- connections).
The VIM editor has been installed on the AUAPPS server (your J: drive).
(GUI versions 5.7, which is smaller, and 6.0, which has more functionality.) 
The version 6 installer application can be found in the Math-Stats-research folder of
the Eaglenet Applications/NAL window.  It is labeled Vim 6.0 Install.
When you first launch the program,
there will be a very short registration of the program to ensure OLE functionality.
Launching the program is simply a matter of clicking on the shortcut in the Start - Programs - Vim 6.0 folder.
If you wish to run the program, use any text editor (e.g., NotePad) to add the following line to the autoexec.bat file on the local hard drive of your PC (you will only do this once):
<br /><code>
set HOME=G:\
</code><br />
Save the file and restart the PC.
The program can now be launched from NAL/EagleNet Applications under the
Math/Statistics/Research folder.
Clicking the icon will copy the _vimrc file to your G: drive (i.e., your Network drive) and install a short-cut on your computer.
The icon in the Math/Stat folder of EagleNet Applications
will copy a shortcut to a new (Start -- Programs -- Vim) directory.
(You can always move this shortcut to your desktop).
Once installed to your desktop,
you can launch the program without opening the EagleNet Applications window.
(To ensure that the VIM installer runs from EagleNet Applications:
right-click on the icon (now called "Install VIM") and choose Verify
from the pop-up menu.  This forces the Novell Application launcher to copy
the shortcut to your PC.)
</p>

<p>
Once you get used to using a mode-based editor, you will <a href="http://www.thomer.com/thomer/vi/vi.html">fall in love</a> with it.
(There is a very nice
<a href="http://iris.ltas.ulg.ac.be/~quy/vim/">manual</a>,
<a href="http://physlab.sci.ccny.cuny.edu/~orycc/vim-main.html">helpful reference material</a>, and a nice
<a href="http://physlab.sci.ccny.cuny.edu/~orycc/vim-regex.html">Vim regular expression tutorial</a>.)
The only downside is that you'll have to get your
<a href="http://www.interlog.com/~tcharron/grep.html">grep</a> (or <a href="http://www.tgries.de/agrep/">agrep</a> or the even more powerful <a href="http://nina.pagesz.net/~minitrue/">MiniTrue</a>) and spellcheck separately.
(There is a Vim based spell checker for Vim:
<a href="http://users.erols.com/astronaut/vim/#Spelling">Dr. C's engspchk.vim</a>.)
You can adapt the <a href="http://www.dcs.shef.ac.uk/research/ilash/Moby/mthes.html">Moby thesaurus</a> for use with Vim.
</p>

<p>
There is a recent book devoted to learning Vim:
<a href="http://www.iccf.nl/click5.html">Vi IMproved by Steve Oualline</a>,
also called the VIM book.
You can view the <a href="http://www.truth.sk/vim/vimbook-OPL.pdf">Vim book online</a>.
</p>
<p>
Be sure to use <a href="http://lanzarotta.tripod.com/">Jeff Lanzarotta's bufexplorer.vim</a>.
(One warning: as of early 2001,
the buffer delete command in bufexplorer uses bd!,
so changed buffers will be deleted upon request without a warning.
Change this to bd)
</p>
<p>
<a href="http://ctags.sf.net">Ctags</a> is no longer included with Vim
(it has grown into a project of its own.)
</p>

<p>
A useful plugin is <a href="http://www.vim.org/scripts/script.php?script_id=293">Universal Text Linking</a>,
which executes URLs in plain text (e.g. call webbrowser, link MS Word documents, text files, embed vim commands).
</p>

<p>
Vim digraphs are based on <a href="http://www.faqs.org/rfcs/rfc1345.html">RFC 1345</a>.
</p>

<p>
You may find it useful to begin your writing with an 
<a href="http://bike-nomad.com/vim/vimoutliner.html">outliner</a>.
</p>

<p>
For user questions you can turn to the <a href="http://www.vim.org/mail.html">Vim mailing list</a>.
There is an <a href="http://www.egroups.com/group/vim">archive</a>.
</p>
<p>
Note that for all systems the Vim distribution is split into an archive with
runtime files (documentation, syntax files, etc.) and a binary and/or source
archive.  You should download at least two archives!
</p>
<p>
You can find many useful hints at <a href="http://www.softpanorama.org/Editors/vim.shtml">Softpanorama Western Orthodox Editors Page</a>.
</p>
<p>
To get a word count in your file: <tt>g ctrl-g</tt>.
To change line spacing see the help for <tt>linespace</tt>.
To change the font in gvim,
you can use the menu dialog <kbd>Edit/SelectFont</kbd>,
or you can include your selection in your <tt>_gvimrc</tt> file.
(I use <tt>set guifont=andale_mono:h9,courier_new:h10</tt>.)
Do not forget that editors should only use <a href="#monospace">monospace fonts</a>.
</p>
<p>
If you type very slowly, you need to slow down Vim's macro recognition.
See the help for <tt>map-typing</tt>.
I recommend resetting timeoutlen according to the example in the help for <tt>timeoutlen</tt>.
</p>
<p>
<code>'.</code> takes you to your last edit
</p>
</div>

<h3 id="ps_hints">PostScript User hints</h3>

<p>
If you want to fill an entire page with background color,
you do not need to know the dimension of the page.
Just start your PostScript program by setting the color
and then giving the command <code>clippath fill</code>.
(Of course few printers can print to the exact edge of the page.)
</p>

<p>
Transparency:
PostScript uses an opaque imaging model.
It does not support transparency.
However, there is a workaround available if you have Adobe Distiller.
You can add a "PDFMark" to your Postscript file
to set the transparency for an object.
When Adobe Distiller processes this PDFMark,
it will set the transparency for the object.  
Lancaster offered an <a href="http://www.tinaja.com/glib/pstrans.pdf ">early discussion</a>.
(Start there rather than with the <a href="http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/pdf_creation_apis_and_specs/pdfmarkReference.pdf">pdfmark Reference Manual</a>.)
Also, note that <a href="http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.50/Language.htm#Transparency">GhostScript supports transparency</a>.
</p>

<h3 id="texhints">LaTeX User hints</h3>

<p>
To get double spacing, use <tt>\usepackage{setspace} \doublespacing</tt>.
This should leave your figures and tables alone.
</p>

<p>
If you use linerange markers with the <tt>listings</tt> package,
make sure your markers do not include hyphens.
(These will be treated as indicating the linerange break.)
</p>

<div>
See Voss's <a href="http://tug.org/TeXnik/mainFAQ.cgi">FAQ supplement</a>.
</div>

<div>
Do not use the eqnarray environment.
<a href="http://www.tug.org/pracjourn/2006-4/madsen/">Lars Madsen explains why.</a>
Instead use one of the beautiful amsmath environments.
</div>

<div>
A geometry trick.
Ulrike Fischer pointed out to me a way in which the geometry package is special:
it will switch to pdftex when you use it.
To see this, consider
<pre>
\documentclass{article}
\usepackage[dvips]{geometry} 
\begin{document}
\makeatletter\show\Gm@driver
\end{document} 
</pre>
This will insert dvips specials if you make a
dvi and pdftex specials if you make a pdf with pdflatex.
Similarly:
<pre>
\documentclass{article}
\usepackage[dvipdf]{geometry} 
\begin{document}
\makeatletter\show\Gm@driver
\end{document} 
</pre>
will insert dvipdfm specials if you make a dvi and pdftex specials if you
make a pdf with pdflatex.
</div>


<p>
The new <a href="http://www.ctan.org/tex-archive/macros/latex/contrib/pict2e/?action=/tex-archive/macros/latex/contrib/">pict2e</a> package provides long awaited and much needed additional functionality to the LaTeX picture environment.
As of June 2004, however, there is a small bug:
be sure to end <tt>qbezier</tt> and <tt>cbezier</tt> commands with an immediate comment character,
to avoid breaks in line continuity.
</p>

<div>
<p>
Using LaTeX to produce PDF files with graphics is pretty easy
as long as you are producing <a href="http://silas.psfc.mit.edu/elec_fig/">clean graphics</a>.
But you need to pay attention to some details.
</p>
<p>
If you are producing your PDF files with dvipdfm,
then you will
find it easiest to use EPS graphics.
(EPS is also the primary standard for publishers.)
Historically this has been my preference,
but lately I've been working more with pdflatex.
</p>
<ol>
<li>
Problem: a few applications (mostly on Windows) do not produce EPS graphics.
In this case, you can produce JPEG files and either
        i. learn how to include .jpg files, or
        ii. <a href="#jpeg2eps">convert JPEG to EPS</a> or <a href="http://code.google.com/p/sam2p/">sam2p</a> (which is fast and easy),
        iii. switch to pdflatex
</li>
<li id="impgraph">
If you are using pdflatex to produce your PDF files,
you cannot include EPS graphics directly.
You can either
  <ol>
    <li>
    convert your EPS graphics to PDF, using <a href="http://www.ctan.org/tex-archive/support/eps2pdf/">eps2pdf</a>
    </li>
    <li>
    produce your graphics in a supported format, such as PDF or JPEG
    </li>
    <li>
    set up your document to <a href="http://www.trevorrow.com/oztex/ozfaq.html#pdfeps">convert EPS to PDF on the fly</a>
  </li>
  </ol>
Trevorrow suggests leaving off the extension (.eps) when you <code>includegraphics</code>
and putting the following in your preamble:
<pre>
\ifx\pdfoutput\undefined
% we are running LaTeX, not pdflatex
\usepackage{graphicx}
\else
% we are running pdflatex, so convert .eps files to .pdf
\usepackage[pdftex]{graphicx}
\usepackage{epstopdf}
\fi 
</pre>
</li>
</ol>
In any case, use the <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=impgraph">graphicx package</a>
and include your graphics. Example:
<pre><code>
    \documentclass{article}
    \usepackage{graphicx}
    \begin{document}
    \begin{figure}[htp]
    \centering
    \includegraphics[width=\textwidth]{c:/temp.eps}
    \caption{Test Figure}
    \label{f:mytestfig}
    \end{figure}
    \end{document}
</code></pre>
Note the forward slash in the path name, as always with TeX.
(You can omit the path if you
i. keep your graphics files in the same folder as your .tex file,
or ii. configure your LaTeX to look in the folder containing your graphics files.)
</div>

<p>
On the one hand it is easy enough to zip up all your <acronym class="help" title="Encapsulated PostScript">EPS</acronym> files with the embedding LaTeX document.
On the other hand,
one of the attractions of the LaTeX picture environment was that your drawings were present in your <tt>.tex</tt> file.
Here is a way to get almost the same thing with <acronym class="help" title="Encapsulated PostScript">EPS</acronym> files.
Add the <tt>moreverb</tt> package.
Put your <acronym class="help" title="Encapsulated PostScript">EPS</acronym> file in a <tt>verbatimwrite</tt> environment in you <tt>.tex</tt> file.
You will have to provide a file name that it will be written to,
but once it is written you can read it into a figure as usual.
(An alternatie is to generate your figures with embedded gnuplot commands,
using the <a href="http://www.tug.org/tex-archive/macros/latex/contrib/egplot/">egplot</a> package.)
</p>

<div>
If you need to wrap text around a figure,
use the <tt>wrapfig</tt> package. Include
the package (in your preamble) and then the
syntax is almost like that for the figure environment.<pre>
\begin{wrapfigure}{R}{2in}
\includegraphics[width=2in]{example.eps}
\caption{Example Caption}
\label{fig:xmpl}
\end{wrapfigure}
</pre>
</div>

<h3 id="bibtexhints">BibTeX User hints</h3>

<ul>
<li>
        The most important hint will undoubtedly prove the least welcome,
        but here it is anyway:
        restrict your characterset in your BibTeX databases as follows.
        For the cite key use only ASCII characters,
        and do not use the colon or plus sign.
        Instead of the key <code>name1+name2:date:journal</code>
        use the key <code>name1.name2-date-journal</code>.
        <br />
        This is not for the sake of LaTeX use,
        but rather to allow you to use your database with other applications
        where <a href="http://www.w3.org/TR/REC-html40/types.html#type-name">id and name tokens</a> may be restricted.
        Suppose for example you want to use your keys as
        the <code>name</code> or <code>id</code> attribute
        in an HTML or XML document.
        The colon is allowed in HTML but is reserved in XML for namespace specification.
        The plus-sign is not allowed in either specification.
        XML allows a whole bunch on non-ASCII characters but HTML does not.  
</li>
<li>
        <a href="http://www.tug.org/pracjourn/2006-4/fenn/">Managing Citations and Your Bibliography with BibTeX</a>
        by Jürgen Fenn 
        is a good introduction to using BibTeX.
</li>
<li>
        If you use cross referencing in your .bib files, there are two important peculiarities.
        Any book entry that is crossreferenced must come after the referring entry in your .bib file.
        Also, BibTeX cannot use the TITLE field in the referenced entry in place of a BOOKTITLE field in the referring entry.
        So in your referenced entry you should include both a TITLE and a BOOKTITLE field (despite these being duplicative).
        This should be fixed in BibTeX version 1.0 and above.
</li>
<li>
        When you create a BibTeX data base, use appropriate capitalization for all titles.
        Lower case will be forced by certain styles (like AU-CMS), so you do not have to worry about that.
        But other styles will maintain the capitalization you provide, and these rely on your correct provision.
</li>
<li>
        Use obvious cite keys (like <code>mankiw.etal-1994-qje</code>)
        so that your bib files remain useful to you years later.
</li>
<li>
        When entering months, always use the default abbreviations
        (e.g., <code>month = jan,</code>) so that months will end up correctly formatted.
        (If you say, <tt>month="Jan.",</tt> it will always be formatted that way.)
</li>
<li>
        Page ranges should be entered in LaTeX format, e.g. 29--32 not 29-32.
</li>
</ul>

<h3 id="gnuplot-hints">Gnuplot User hints</h3>

<p>
Since gnuplot is a plotting package,
it offers limited data manipulation facilities.
These can be increased by the use of gawk,
which gnuplot can talk to nicely.
Alternatively you can manage your data in Python and use a Python interface to gnuplot,
such as <a href="http://gnuplot-py.sourceforge.net/">Gnuplot.py</a>.
If you use IPython,
which is a good idea,
you can try the included enhanced version: Gnuplot2.py.
In either case,
if you use gnuplot's <code>fit</code> command,
you should consider <a href="http://sourceforge.net/mailarchive/message.php?msg_id=5687034">how to get the results back into Python</a>.
</p>

<p>
Be sure to use the valuable documentation that gnuplot includes.
Begin by typing "help introduction" at the gnuplot prompt,
since this explains the syntax used in the help documents.
<br />
Note: if you download gnuplot for Windows as a ``.zip`` file,
the gnuplot help file (wgnuplot.chm) does not work properly.
Windows blocks it.
To unblock it, right click on the file,
pick ``Properties``, and then press ``Unblock``.  
Please be sure you have an official release before doing this.
</p>

<p>
The command to load a script is <tt>load</tt>.
Provide your file name in quotes, using forward slashes.
</p>

<p>
Remember that gnuplot distinguishes integers and floats by the presence of a
decimal point.
Make sure your real numbers are recognized as real by including a decimal point.
Integer division produces an integer result.
For example, $3/2=1$ but $3./2=1.5$.
</p>

<p>
To easily plot a cobweb plot (i.e., Verhulst diagram with gnuplot,
see <a href="http://www.jaist.ac.jp/~s1060005/article/?gnuplot_cobweb">this article</a>.
</p>

<p>
Setting the color of plots is not well documented.
Do it by setting the linetype variable.
To see the linetypes, type <kbd>test</kbd> at the gnuplot command line.
</p>

<p>
To draw a 3-D scatterplot, try
<br />
splot 'data.asc' with points palette
</p>

<p>
You can draw a line segment by setting an arrow with the "nohead" parameter.
</p>

<div>
Suppose you want a log scale on the y axis but you want to display the numbers as base raised to an exponent.
<pre>
set log y 2.0
set format y '2^%L'
</pre>
</div>

<div>
The basic way to place single points is with the <code>label</code> command.
Use the 'front' option to make sure that they are placed after lines are plotted.
If you know the location,
you can also place a point as a data plot of a single value. E.g.,
<pre>
<code>
plot '-' with points ps 3
1 1
e
</code>
</pre>
centers a point at (1,1).
</div>

<p>
If you would like to use gnuplot to create a drawing with no plots in it this is possible.
Just be sure to set the <code>yrange</code>,
then <code>plot 0/0</code> after all your drawing commands.
</p>

<p>
Up to version 3.8j, <tt>gnuplot</tt> arrowheads are not offset to account for their miter.
This means they generally extend past the point where you expect them to stop.
There is no satisfactory workaround, but you can try drawing a filled arrow with a very narrow pen and then redrawing just the tail (as a headless "arrow") with a thicker pen.
</p>

<p>
Kawano offers a brief overview of how to generate
<a href="http://t16web.lanl.gov/Kawano/gnuplot/intro/plotcalc-e.html">numerical plots</a>
using gnuplot.
</p>

<h3 id="firefoxhints">FireFox hints</h3>

<p>
I consider one extension to be indispensible:
<a href="https://addons.mozilla.org/en-us/firefox/addon/session-manager/">Session Manager</a>.
Another interesting extension is <a href="https://addons.mozilla.org/en-us/firefox/addon/taboo/">Taboo</a>
which allows you to replace the practice of keeping many tabs open with a single page of site links.
</p>

<h3 id="windows-hints">Windows hints</h3>

<p id="windows-hints-extensions">
The default in Windows is to prevent you from seeing the extension to a filename.
You can fix this as follows:
open the Control Panel and open Folder Options,
then pick the View tab and uncheck Hide File Extensions.
</p>

<div>
If you search "all" files and folders with Windows Explorer in Win XP,
by default only "recognized" (by extension) file types are searched.
Believe it or not, you must edit your registry to fix this.
(The usual caveats apply.) Set
<pre>
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\FilterFilesWithUnknownExtensions = 1
</pre>
</div>

<div>
Windows File Search:
Basic file search in Windows is indexed.
To search all files, use advanced search and check "Include non-indexed".
It can also be useful to <a href="http://www.microsoft.com/windows/products/winfamily/desktopsearch/technicalresources/indexing.mspx">change what is indexed</a>.
</div>


<h3 id="opera-hints">Opera hints</h3>

<div class="boxed">
Opera hints:
<br />
You can disable the Opera splash screen by adding/editing this line in your
opera.ini file, [user prefs] section.  
<pre>SHOW SPLASH SCREEN=0</pre>
You can pre-empt certain misconfigured servers that do not correctly handle 
<a href="http://www.faqs.org/rfcs/rfc2616.html">RFC2616</a>
add the following to the [Adv User Prefs] section of opera6.ini:
<pre style="font-size: smaller">HTTP Accept Charset=windows-1252, utf-8, utf-16, iso-8859-1, iso-8859-15;q=0.6, *;q=0.1
</pre>
</div>

<div>
The article on the Opera website about how to install the Adobe <acronym class="help" title="Scalable Vector Graphics">SVG</acronym>
Viewer states: "Please note: SVG may not work correctly, some users
report that the images do not animate, even though they are
displayed."
You can overcome this with a bit of work.
Install the <a href="http://www.adobe.com/svg/viewer/install/beta.html">Adobe SVG Viewer version 6 beta release</a> of v6 of the Adobe SVG viewer,
then copy three DLLs to the Opera Plugins directory.
(The Adobe SVG Viewer v6 beta release passes almost all of the W3C SVG compliance suite.)
Just follow the installation instructions. 
Once it is installed,
copy the following files to the Opera\Program\Plugins directory:
<pre>
NPSVG6.DLL
SVG6RFF.DLL
SVG6RR.DLL
</pre>
Restart Opera and test the plugin at the
<a href="http://www.adobe.com/svg/viewer/install/svgtest.html">Adobe SVG test page</a>.
You should see 3 animated images.
</div>

<h3 id="gretl-hints">gretl hints</h3>

<div>
To install gretl on an Intel Mac,
make sure you do a 3-step install:
<li>
Make sure X11 is installed. (On Tiger you will need to install from your system disk.
On Leopard,
update your X11 from
<a href="http://xquartz.macosforge.org/trac/wiki">http://xquartz.macosforge.org/trac/wiki</a>.
</li>
<li>
install the GTK+ Framework,
</li>
<li>
install the **intel** disk image.
</li>
The last two are at <a href="http://gretl.sourceforge.net/osx.html">http://gretl.sourceforge.net/osx.html</a>.
</div>

<h3 id="luatex-hints">LaTeX hints</h3>

<p>
New LaTeX users on Windows may wish to read <a href="http://www.pinteric.com/miktex.html">these hints</a>
</p>

<div>
Suppose you want to use a non-standard document class,
say a thesis class to format your LaTeX thesis.
You need LaTeX to be able to find the class (.cls) and class option (.clo) files.
Here are some options for providing this information.
(For more information, see the <a href="http://docs.miktex.org/manual/localadditions.html">MiKTeX documentation</a>.)
<ul>
<li>
Put them in the same folder as your thesis.
</li>
<li>
Put them in an arbitrary folder that you point to by setting the <tt>TEXINPUTS</tt> environment variable.
(E.g., on Windows you might use the
<a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/set.mspx?mfr=true">set command</a>
or go to Advanced System Settings via the Control Panel.
Users of the Bash shell might use the <tt>export</tt> command.)
</li>
<li>
Put them in an arbitrary folder that you point to by using the <tt>--include-directory</tt> option when you call pdflatex.
</li>
</li>
<li>
Put them in a properly (TDS) structured <tt>localtexmf</tt> folder,
and then refresh your LaTeX database.
</ul>
</div>

<p>
To include graphics in your document,
use the <tt>graphicx</tt> package.
Keep your images grouped together,
and point to them with the <tt>\graphicspath</tt> command.
(Some knowledgeable users suggest setting <tt>TEXINPUTS</tt> instead,
e.g., <a href="http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/2618">http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/2618</a>.)
Note the odd syntax for <tt>\graphicspath</tt>:
each path must be in braces and must end with a forward slash.
If you want an images directory searched recursively
(say because you put each chapters images a separate folder),
end the path with a double slash.
E.g., <tt>\graphicspath{{images-eps//}{images-pdf//}}</tt>.
</p>

<h4 id="tikz-hints">TikZ hints</h4>

<p>
Most important:
the <a href="http://paws.wcu.edu/tsfoguel/tikzpgfmanual.pdf">TikZ manual</a> is very helpful.
Also, Crémer provides a <a href="http://cremeronline.com/LaTeX/minimaltikz.pdf">useful introduction</a>.
</p>

<p>
The intersection coordinate systems are very useful.
E.g., <code>(A |- B)</code> takes the first coordinate from A and the second coordinate from B.
See the PyX manual.
</p>

<p>
The <code>arc</code> command feels odd, especially to those with PostScript experience.
Instead of inputting a circle center, you must give the start point for the arc.
Suppose we want to draw an arc from from a circle centered at (1,1) with a radius of 2,
say from 30 degrees to 60 degrees.
You can do that like this:
<code>\draw (1,1) +(30:2) arc (30:60:2)</code>
</p>

<p>
Parametric plots are easy. E.g.,
<code>\draw[domain=-20:0, smooth, variable=\t, samples=200] plot({cos(\t r)*exp(0.1*\t)}, {-sin(\t r)*exp(0.1*\t)});</code>
</p>

<p>
To place text along a line, use the <code>sloped</code> keyword:
<code>\draw (0,0) -- (5,1) node[above,very near end,sloped] {text}</code>
</p>

<p>
You can use <code>tikzset</code> to set the default arrowhead style for your document:
<code>\tikzset{>=latex}</code>.
</p>
<!-- chk -->

<p>
Predefined line thicknesses are:
ultra thin, very thin, thin (the default),
semithick, thick, very thick, ultra thick.
You can also set the line width explicitly:
<code>\draw[line width=0.5pt]</code>.
</p>
<p>
A very light gray is <code>black!10</code>.
A very dark gray is <code>black!90</code>.
</p>

<p>
Use <tt>pgfplots</tt> for plots.
The manual is good,
a most tasks have very easy and obvious solutions.
A few odd things are obscure.
E.g., <a href="http://tex.stackexchange.com/questions/55718/how-can-i-add-a-zero-line-to-a-plot">adding a zero-line</a>
to a plot.
</p>


<h4 id="luatex-hints">LuaTeX hints</h4>

<p>
See <a href="http://www.luatex.org/svn/trunk/manual/luatexref-t.pdf">the LuaTeX manual</a>.
</p>

<p>
Recent TeX distributions include LuaTeX.
The first thing most new users will wish to attemp with LuaTeX
is compilation of legacy LaTeX documents.  You can compile a LaTeX document named
<code>mydoc.tex</code> with the command <code>lualatex mydoc</code>.
</p>

<h3 id="unicode-hints">Unicode hints</h3>

<p>
To enter arbitrary Unicode characters on a Windows platform, see
<a href="http://www.fileformat.info/tip/microsoft/enter_unicode.htm">http://www.fileformat.info/tip/microsoft/enter_unicode.htm</a>.
On Linux, consider the <a href="http://code.google.com/p/ibus/]">IBus</a> input bus.
If you use Vim on either platform, see <code>help utf-8-typing</code> (and <code>help digraphs-default</code>).
</p>

<h3 id="gnuwin32-hints">GnuWin32 hints</h3>
<p>
GnuWin32 includes many useful GNU applications,
including grep, sed, and awk.
If you download everything (recommended), it will take a while.
</p>

<div>
Installation
(with thanks to <a href="http://arturo-servin-research.blogspot.com/2007/08/gnuwin32.html">Arturo Servin</a>)
and the <a href="http://getgnuwin32.sourceforge.net/">GetGnuWin32 developers</a>.
<ol>
<li>
Download the <a href="http://getgnuwin32.sourceforge.net/">getgnuwin32</a> project maintenance utility.
(This will download and install the tools for you.)
</li>
<li>
Run the executable file you downloaded.
It will ask you for a destination to decompress the file.
This will be a temporary directory: you will eventually delete it.
I will assume you use c:\temp\getgnuwin32.
(You can choose whatever you want.)
To install, you can just follow the instructions.
(If you want details you can check the readme file included with the package.)
</li>
<li>
Comment: If you are behind a proxy,
you may have to configure wget (using bin\wget.ini).
</li>
<li>
Run download.bat.
(This file is well documented.
If you wish to change the defaults---e.g., the default mirror site for download---
edit the file before running it, and save your changes.)
As it runs, download.bat will download the applications packages.
This can take a while.
</li>
<li>
When dowload.bat finishes running,
run install.bat.
(This will decompress the downloaded packages.)
</li>
<li>
<em>Copy</em> the folder getgnuwin32\gnuwin32 to a new folder C:\programs\gnuwin32.
(Or anywhere else you want.)
</li>
<li>
Change to your newly filled C:\programs\gnuwin32 folder
and run the file update-links.bat.
This should complete the installation process (by updating any orphan links).
You are now ready to use your new tools.
</li>
</ol>
Optionally:
<ul>
<li>
Copy the &ldquo;Start Menu&ldquo; folder
(which you will find inside your gnuwin32 folder)
to the Start Menu of your windows desktop.
When executed the shortcuts inside will automatically start a cmd in the path of gnuwin32.
</li>
<li>
Add environmental variables as recommended in the <a href="http://gnuwin32.sourceforge.net/install.html">GnuWin32 docs</a>.
(Recommended.)
</li>
<li>
Add the full path to your gnuwin32\bin folder to your PATH.
</li>
<li>
Delete your temp\getgnuwin32 folder.
You do not need it any more.
</li>
</ul>
</div>

<p>
There are more options.
I do not use them and they can confuse some windows applications using the same name as those in the gnu package,
so I will not explain.
If you are interested, check the readme file.
</p>


<hr />




<div class="smaller">
Adobe, PostScript, and Acrobat are registered trademarks of Adobe Systems, Incorporated.
Apple and Macintosh are registered trademarks of Apple Computer, Incorporated.
Windows and MS-DOS are trademarks of Microsoft Corporation.
</div>

<p id="contact" class="center">
Copyright &copy; 1998 &amp; 2014
by Alan G. Isaac
<br />
(<em>mailto: a i s a a c @ a m e r i c a n . e d u</em>)
<br />
<strong>Some Rights Reserved:</strong>
The content on this page is subject to the 
<a href="http://creativecommons.org/licenses/by/2.0/">Creative Commons Attribution License version 2.0</a>
</p>


<div class="row" style="font-size:x-small">
<span class="left tab"><a href="#top">Top of This Page</a></span>
<span class="right tab"><a href="http://www.american.edu/cas/department_economics.shtml">Economics Department Home Page</a></span>
<br />
</div>


</body>
</html>

